-3

可能重复:
C# 字符串格式化和填充

在我的 C# 程序中,我有四个变量:

string checkNo = "1234";
string checkAmount = "25.60";
string checkCashedDate = "120413";
string filler = "   "; // three spaces

我想构建一个如下所示的字符串(长 26 个位置):

"00123400000002560120413   "

我可以手动做,即检查每个字段的长度(删除小数),用适当数量的零填充,附加到最终字符串。但是,我希望有更快的方法。就像创建一个具有某种格式(全为零)的字符串,然后“插入”这些值。在 C# 中有这样的东西吗?感谢您的任何帮助和建议。

4

4 回答 4

5

您可以使用String.PadLeft适当地构建此字符串:

string result = checkNo.PadLeft(6, '0') + 
                checkAmount.Replace(".","").PadLeft(11, '0') +
                checkCashedDate.PadLeft(6, '0') + filler;

话虽如此,我个人会将这些值存储为数值和 aDateTime而不是字符串值,并使用单个 String.Format 语句重新格式化结果。这在使用值时提供了更多的类型安全性。

于 2012-05-15T16:12:03.140 回答
4

用于string.PadLeft确保较大字符串的每个部分的宽度,与string.Format和结合使用string.Replace

checkNo.PadLeft(6, '0') + 
checkAmount.Replace(".", "").PadLeft(11, '0')  + 
checkCashedDate.PadLeft(6, '0') + filler

或者:

string.Format("{0}{1}{2}{3}",
              checkNo.PadLeft(6, '0'),
              checkAmount.Replace(".", "").PadLeft(11, '0'),
              checkCashedDate.PadLeft(6, '0'),
              filler);

或者,(使用复合格式),如Guffa 发布的:

string.Format(
  "{0,6}{1,11}{2,6}",
  checkNo,
  checkAmount.Replace(".", ""),
  checkCashedDate
).Replace(" ", "0") + filler
于 2012-05-15T16:09:18.753 回答
2

您可以使用String.Format空格填充,并用零替换这些空格:

String.Format(
  "{0,6}{1,11}{2,6}",
  checkNo,
  checkAmount.Replace(".", ""),
  checkCashedDate
).Replace(" ", "0") + filler
于 2012-05-15T16:15:41.530 回答
1

查看String.Format()方法。

此示例显示如何使用该String.Format方法生成数字字符串:

String.Format("{0,6}{1,11}{2,6}", checkNo, checkAmount, checkCashedDate).Replace(' ','0');
于 2012-05-15T16:06:31.937 回答