Создайте строку с пробелами с помощью String Builder или класса string - PullRequest
0 голосов
/ 23 июня 2011

Мне нужно сделать длинную строку, около 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  "

    }

Ответы [ 7 ]

6 голосов
/ 23 июня 2011
string.Format("{0,-5}{1,-5}{2,-5}", val1, val2, val3);

Это создаст пять пробелов для каждого из значений, даже если они имеют ширину менее пяти символов.«-» означает, что значения будут выровнены по левому краю.

1 голос
/ 23 июня 2011

Просто используйте StringBuilder, как вы предложили.

StringBuilder sb = new StringBuilder();
sb.Append(str1);
sb.Append(" ");
sb.Append(str2);
sb.Append("  ");
string finalString = sb.ToString();
0 голосов
/ 23 июня 2011
string finalStr = str1.PadRight(4,' ') + str2.PadRight(6,' ');

Нет необходимости в построителе строк, потому что вы добавляете все сразу.

0 голосов
/ 23 июня 2011

Я рекомендую формат с фиксированной длиной , поддерживаемый FileHelpers .

[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 голосов
/ 23 июня 2011
while (finalStr.Length < 10)
    finalStr += " ";
0 голосов
/ 23 июня 2011

Вы можете использовать String.Join

String.Join(" ", myStrings);

Предполагая, что myStrings является IEnumerable из строк

0 голосов
/ 23 июня 2011
var finalStr = ("1234" + " " + "abc").PadRight(10, ' ');
...