2011-07-05 192 views
2

的第一次出现,我有一些形式中,用户会输入一些数字,我想,以防止它们在此字符串输入多个逗号正则表达式只允许字符

我做了这样的事情

var input = "1,,,,2"; 
var value = Regex.Replace(input, ",{1,}", "."); 

这将输出1.2,这是正确的。但是,如果我进入

var input = 1,,,2,3,,,4,5,,6 

都失败

什么ID喜欢做的事就是形成输入的最后一个版本1.23456

有什么建议?

由于

+0

你能调用替换()两次,一次更换第一个逗号,并再次删除其余的逗号? –

+2

你为什么用句点替换逗号? (我在问,因为我希望你不要将像3995000,43这样的瑞典格式的数字转换为美国格式的3,995,000.43,所以你可以使用'decimal.Parse',而不是使用'decimal.Parse'与瑞典文化信息。) – dtb

+0

即时通讯替换句点,以便能够进行计算,它与数字格式无关! :) –

回答

2
Regex.Replace (input, @"(?<=^\d+),", ".").Replace (",", ""); 

这种具有.周期替换第一个,逗号,然后用empty替换剩余的逗号。

1

使用这个表达式:(?<!,[^,]*?),+

var res = Regex.Replace(input, @"(?<!,[^,]*?),+", ".").Replace(",", string.Empty); 

或者验证码:

var res = Regex.Replace(input, @"(?<!,[^,]*?)(,+)|(,+)", 
    m => m.Groups[1].Success ? "." : string.Empty); 

输出:1.23456

+0

这只适用于fint,但agent-j的方法稍微简单一些 –

相关问题