我有一点空白。如果我想将以下格式 (## ### ###
) 应用于一个 int 值,我应该这样做。
string myFormat = "## ### ###";
int myPin = 18146145;
Console.WriteLine(myPin.ToString(myFormat)); //18 146 145
问题在于如果要将类似于
"02112321"
的值格式化成"02 112 321"
,需要应用精确的格式"## ### ###"
。这种情况下,0会消失。我有一点空白。如果我想将以下格式 (## ### ###
) 应用于一个 int 值,我应该这样做。
string myFormat = "## ### ###";
int myPin = 18146145;
Console.WriteLine(myPin.ToString(myFormat)); //18 146 145
"02112321"
的值格式化成"02 112 321"
,需要应用精确的格式"## ### ###"
。这种情况下,0会消失。格式化是通过给值确定一定的形式来将其转换为字符串。因此,格式化不适用于字符串(因为它们已经是字符串)。您可以将字符串转换为数字,然后再将其转换回字符串并应用所需的格式。
string myFormat = "00 000 000";
string s = "02112321";
string formatted = Int32.Parse(s).ToString(myFormat); // ==> "02 112 321"
"00 000 000"
,而不是"## ### ###"
。Int32.MaxValue
为2,147,483,647
。如果您需要格式化更大的数字,请使用Int64.Parse
,允许数字高达9,223,372,036,854,775,807
。如果存在相应的数字,则使用0替换0;否则,在结果字符串中出现0。
您可以这样做:
02112321.ToString("00 000 000", CultureInfo.InvariantCulture)
编辑:
如 @olivier-jacot-descombes 所指出的,我漏掉了一点。OP想要将包含整数的字符串格式化为字符串。例如 "02112321"
格式化为 "02 112 321"
。
可以通过中间转换实现,即从字符串到整数再到字符串。以这个例子来说,这样做将 "02112321"
转换为 02112321
,然后转换为 "02 112 321"
:
var original = "02112321";
var toInt = int.Parse(original, CultureInfo.InvariantCulture);
var formated = toInt.ToString("00 000 000", CultureInfo.InvariantCulture)
$"{myStr.Substring(0,2)} {myStr.Substring(2,3)} {myStr.Substring(5,3)}
? - Flydog57