我有一些逗号分隔的数据如下:
John, Dog, 0, 00, 0, 0.00, 123
我希望0有2位小数.. 输出应为:
John, Dog, 0.00, 0.00, 0.00, 0.00, 123
有办法做到这一点吗?
我故意在使用逗号之前留下了随机空格。
答案 0 :(得分:4)
回应我的评论。在不使用正则表达式的情况下解决这个问题很简单。
string input = "John, Dog, 0, 00, 0, 0.00, 123";
string[] items = input.Split(",");
for (int i = 0; i < items.Length; i++)
{
string value = items[i].Trim();
int converted;
if (int.TryParse(value, out converted))
{
if (converted == 0)
{
items[i].Replace(value, "0.00");
}
}
}
string output = string.Join(items, ",");
答案 1 :(得分:0)
这是另一个不使用正则表达式的简单解决方案。
string input = "John, Dog, 0, 00, 0, 0.00, 123";
string[] items = input.Split(",");
for (int i = 0; i < items.Length; i++)
{
int intValue;
if (Int32.TryParse(items[i].Trim(), out intValue))
{
if (intValue == 0)
items[i] = intValue.ToString("f2");
}
}
string output = string.Join(items, ", ");
答案 2 :(得分:0)
这是一个应该处理基本上所有东西的例子:
Regex.Replace("John, Dog0, D0g, 0Dog, 10, 10.0, 00, 0, 0.00, 0.0, 0.000, 00.00, 123",
@"(?<=,\s*|^)0+(\.0*)?(?=\s*,|$)", "0.00")
输出:
John, Dog0, D0g, 0Dog, 10, 10.0, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 123
正则表达式的解释:
(?<=,\s*|^) # after either a comma or the start of a string
0+ # match at least one '0'
(\.0*)? # match an optional fractional part
(?=\s*,|$) # must be before a comma of the end of the string
答案 3 :(得分:0)
这似乎在快速测试中起到了作用:
using System.Text.RegularExpressions;
Regex regex = new Regex( "\\b(?:0|\\.)+\\b" );
string input = "John, Dog,0, 00,000.0000, 0, 0.00, 123, 007,0";
string result = regex.Replace( input, "0.00");
我们只是在字边界上查找任何连续的零和句点字符串,并替换为“0.00”。因此,对于诸如“0.0 ... 000”之类的无效数据,它将会下降,但也许这是可以接受的。