2011-06-23 27 views
0

サービスに送信する値が異なる長い文字列(約360文字)を作成する必要があります。私は各セクションのポジションを知っており、次のポジションに達するまで値と空白を挿入できる必要があります。 以下は私が始めた例です。私はポジション0から開始する必要があり、次の値はポジション5(abc)に入る必要があると言います。これまで私はこのように連結することができました:"1234abc"が必要ですが、"1234 [スペース] abc [スペース] [スペース]"ありがとうございました。文字列ビルダーまたは文字列クラスの文字列を作成する

//sbTrialSpaces 
    private void TrialSpaces() 
    { 

     string str1 = "1234"; 
     string str2 = "abc"; 
     string finalStr;//Has to be 10 positions 
     //like this "1234 abc " 

    } 

答えて

6
string.Format("{0,-5}{1,-5}{2,-5}", val1, val2, val3); 

これは、彼らが広い5文字未満であっても、値ごとに5つのスペースを作ります。 「 - 」は値が左詰めになることを意味します。

+0

あなたの素晴らしいクイック応答はありがとうございます。私はちょうどこの提案を試み、私のニーズを十分に満たしています。チャンスがあるときには私は間違いなく他の反応を試していきますが、今のところ私は上に行くことができます。皆さんは素晴らしい一日を! – Tony

0
var finalStr = ("1234" + " " + "abc").PadRight(10, ' '); 
1

あなたが示唆したようにジャストのStringBuilderを使用します。

StringBuilder sb = new StringBuilder(); 
sb.Append(str1); 
sb.Append(" "); 
sb.Append(str2); 
sb.Append(" "); 
string finalString = sb.ToString(); 
0

あなたはmyStringsを想定するとString.Join

String.Join(" ", myStrings); 

を使用することができ、私はそのFileHelpersサポートFixed Length形式をお勧めします文字列

0
while (finalStr.Length < 10) 
    finalStr += " "; 
0

のIEnumerableをです。

[FixedLengthRecord()] 
public class Order 
{ 
    [FieldFixedLength(5)] 
    public int OrderId; 

    [FieldFixedLength(30)] 
    [FieldTrim(TrimMode.Right)] 
    public string CustomerName; 

    [FieldFixedLength(10)] 
    public string SKU; 

    [FieldFixedLength(8)] 
    [FieldConverter(typeof(TwoDecimalConverter))] 
    public decimal Price; 

    [FieldFixedLength(8)] 
    [FieldConverter(ConverterKind.Date, "ddMMyyyy")] 
    public DateTime AddedDate; 
} 
0
string finalStr = str1.PadRight(4,' ') + str2.PadRight(6,' '); 

一度にすべてを追加しているので、StringBuilderのための必要はありません。

関連する問題