我有一串4个数字:
1234
我希望以最优雅的方式将其转换为MVC
1,2,3,4
codeToSend.ToString( “#,#”);
但这会输出“1,234”(我真的很期待)。
我怀疑下面会在每个数字后面加一个逗号,但无济于事。
codeToSend.ToString( “#,#,#,#”);
I have also tried string.format,但我再次遇到同样的问题。
var formattedString = string.Format(“{0:0,0}”,1234);
这样做最有效的方式是什么?
注意: 数字字符串的长度始终为4位数 - 仅限数字。我不想使用Insert,因为这不是非常优雅的IMO,我知道这个问题之前已经以类似的方式提出过,但它在关键方面总是略有不同(例如格式化为数千,不是每一个数字或只是不优雅!)。
答案 0 :(得分:5)
如何使用string.Join
?
new Thread(new Runnable() {
public void run() {
String text = panel.getInfo();
info.post(new Runnable(){
public void run() {
info.setText(text);
}
});
}
}).start();
如果int i = 1234;
string.Join(",", i.ToString().ToCharArray()); // 1,2,3,4
为1234
,请使用;
string
或
string s = "1234";
string.Join(",", s.ToCharArray()); // 1,2,3,4
答案 1 :(得分:0)
这个可能更有效率。 (但很不优雅)
var target = "1234";
var result = Regex.Replace(target , @"(\d)(?=.)", "$1,");
考虑到固定的字符串长度,可以在没有前瞻的情况下完成相同的结果(阅读更简单,效率更高)
var target = "1234";
var result = Regex.Replace(target, @"(\d)(\d)(\d)(\d)", "$1,$2,$3,$4");
此外,如果您正在处理许多此类值,则应在使用之前编译正则表达式。
var target = "1234";
var digitExceptLastRegex = new Regex(@"(\d)(?=.)", RegexOptions.Compiled);
var result = regex.Replace(target, "$1,");
但我还没有衡量实际表现。