我有一个WPF TextBox,用户可以在其中键入数字。现在我正在搜索字符串格式,可以将每个3点的TextBox编号分开(如 0,0 ),但我希望单独的文字与斜线或 Back Slash 或其他角色。我们不知道我们的号码有多少点。
我正在搜索字符串格式而不是Linq解决方案等。我读了Microsoft help,但无法找到任何方法。
sample = 123456789 ==> 123/456/789(好)--- 123,456,789(差)
更新:
谢谢大家,但我搜索了一些像 stringformat = {} {0:0,0} 等的东西。我的意思是不要使用字符串函数,如正则表达式,替换或linq或任何c#代码。我想使用像{#,#}等字符串。请参阅我的帖子中的microsoft链接我需要为我的问题创建一个字符串。
答案 0 :(得分:2)
您可以使用NumberFormatInfo.NumberGroupSeparator Property
来自MSDN的样本
using System;
using System.Globalization;
class NumberFormatInfoSample {
public static void Main() {
// Gets a NumberFormatInfo associated with the en-US culture.
NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;
// Displays a value with the default separator (",").
Int64 myInt = 123456789;
Console.WriteLine( myInt.ToString( "N", nfi ) );
// Displays the same value with a blank as the separator.
nfi.NumberGroupSeparator = " ";
Console.WriteLine( myInt.ToString( "N", nfi ) );
}
}
/*
This code produces the following output.
123,456,789.00
123 456 789.00
*/
为您 - 将NumberGroupSeparator属性设置为' /'
<强>更新强> 另一个样本
var t = long.Parse("123/456/789",NumberStyles.Any, new NumberFormatInfo() { NumberGroupSeparator = "/" });
var output = string.Format(new NumberFormatInfo() { NumberGroupSeparator="/"}, "{0:0,0}", t);
答案 1 :(得分:1)
您可以使用自定义NumberFormatInfo
。然后将其用于ToString
的{{1}}:
NumberFormatInfo nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberGroupSeparator = "/";
nfi.NumberDecimalDigits = 0; // otherwise the "n" format specifier adds .00
Console.Write(123456789.ToString("n", nfi)); // 123/456/789
答案 2 :(得分:1)
由于OP坚持使用String.Format
:
string input; //the input of your textbox
int temp = int.Parse(input); //parse your input into an int
//the Format() adds the decimal points, the replace replaces them with the /
string output = String.Format("{0:0,0}", temp).Replace('.', '/');
这里重要的一步是将文本框的文本转换为整数,因为这简化了使用String.Format()
插入小数点的过程。
当然,您必须确保您的文本框在解析时是有效的数字,否则您可能会遇到异常。
修改强>
所以...你有一些动态长度号码,并希望使用静态格式字符串格式化它(如正则表达式,字符串替换,ling或任何c#所有代码(!)都是不行的?这是不可能的。
你必须有一些动态代码在某处创建一个格式字符串
如果不再参考正则表达式或字符串替换,这里有一些代码可以根据您的输入数字创建格式字符串。
这样您只需拨打一次String.Format()
电话。也许你可以把算法放在其他地方创建格式字符串,然后从你需要的地方调用它。
string input; //the input of your textbox
int temp = int.Parse(input); //parse your input into an int
string customString = "{0:";
string tempS = "";
for (int i = 0; i < input.Length; i++)
{
if (i % 3 == 0 && i != 0)
{
tempS += "/";
}
tempS += "#";
}
tempS = new string(tempS.Reverse().ToArray());
customString += tempS;
customString += "}";
string output = String.Format(customString, temp));