我需要创建一个长字符串,大约360个字符,使用不同的值发送给服务。我知道每个部分的位置,我需要能够插入值和空白,直到我到达下一个位置。 以下是我开始的一个例子;每说我需要从位置0开始,下一个值需要进入位置5(abc)。到目前为止,我已经能够连接这样:“1234abc”,但我需要的是“1234 [space] abc [space] [space]”谢谢你你的帮助。
//sbTrialSpaces
private void TrialSpaces()
{
string str1 = "1234";
string str2 = "abc";
string finalStr;//Has to be 10 positions
//like this "1234 abc "
}
答案 0 :(得分:6)
string.Format("{0,-5}{1,-5}{2,-5}", val1, val2, val3);
这将为每个值创建五个空格,即使它们的宽度小于五个字符。 “ - ”表示值将是左对齐的。
答案 1 :(得分:1)
只需像你建议的那样使用StringBuilder。
StringBuilder sb = new StringBuilder();
sb.Append(str1);
sb.Append(" ");
sb.Append(str2);
sb.Append(" ");
string finalString = sb.ToString();
答案 2 :(得分:0)
var finalStr = ("1234" + " " + "abc").PadRight(10, ' ');
答案 3 :(得分:0)
您可以使用String.Join
String.Join(" ", myStrings);
假设myStrings是IEnumerable of strings
答案 4 :(得分:0)
while (finalStr.Length < 10)
finalStr += " ";
答案 5 :(得分:0)
我推荐Fixed Length支持的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;
}
答案 6 :(得分:0)
string finalStr = str1.PadRight(4,' ') + str2.PadRight(6,' ');
不需要stringbuilder,因为你要一次添加它。