我想在 C# 中的字串中每 3 個字符之間添加空格,但從右到左計數。
例如 :
11222333 -> 11 222 333
uj5u.com熱心網友回復:
如果您嘗試根據某些語言環境約定將字串格式化為數字,您可以使用 NumberFormat 類來設定您希望如何將數字格式化為字串
所以例如
string input = "11222333";
NumberFormatInfo currentFormat = new NumberFormatInfo();
currentFormat.NumberGroupSeparator = " ";
if(Int32.TryParse(input, NumberStyles.None, currentFormat, out int result))
{
string output = result.ToString("N0", currentFormat);
Console.WriteLine(output); // 11 222 333
}
uj5u.com熱心網友回復:
@Jimi 從評論中回答(如果他們發布自己的,將洗掉)
var YourString = "11222333";
var sb = new StringBuilder(YourString);
for (int i = sb.Length -3; i >= 0; i -= 3)
sb.Insert(i, ' ');
return sb.ToString();
該演算法的好處似乎是您在字串中向后作業,因此每次運行僅移動一定量,而不是整個字串。
uj5u.com熱心網友回復:
以下遞回函式可以完成這項作業:
string space3(string s)
{
int len3 = s.Length - 3;
return (len <= 0) ? s
: (space3(s.Substring(0, len3)) " " s.Substring(len3));
}
C# 8.0引入了字串范圍。范圍允許更緊湊的形式:
string space3(string s)
{
return (s.Length <= 3) ? s
: (space3(s[..^3]) " " s[^3..]);
}
uj5u.com熱心網友回復:
使用Regex.Replace
:
string input = "11222333";
string result = Regex.Replace( input, @"\d{3}", @" $0", RegexOptions.RightToLeft );
在regex101演示和詳細解釋 RegEx 模式。
tl; dr:從右到左匹配 3 位數字組,并用空格 3 位數字替換它們。
uj5u.com熱心網友回復:
我能想到的最有效的演算法如下:
var sb = new StringBuilder(YourString.Length YourString.Length / 3 1);
if (YourString.Length % 3 > 0)
{
sb.Append(YourString, 0, YourString.Length % 3);
sb.Append(' ');
}
for (var i = YourString.Length % 3; i < YourString.Length; i = 3)
{
sb.Append(YourString, i, 3);
sb.Append(' ');
}
return sb.ToString();
我們首先分配StringBuilder
正確大小的 a。
然后我們檢查是否需要附加前一個或兩個字符。然后我們回圈其余的。
dotnetfiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490486.html