我想制作一个对字符,
或.
不敏感的程序作为输入,以便进行一些计算而不考虑我应该使用哪个符号来分隔整数部分来自小数部分。
我能想象的唯一方法是识别输入字符串,检查是否有.
并将其替换为,
,因为我的cultureType只接受,
。
问题是我没有任何想法,有人可以帮助我吗?
答案 0 :(得分:1)
if(inputString.Any(x => x == '.'))
{
inputString = inputString.Replace('.', ',');
}
答案 1 :(得分:1)
我猜测(它不在您的问题中)您尝试解析小数,并且该数字可能有一个小数分隔符而不是千位分隔符,它可能是,
,它可能是.
一种可能的启发式方法来猜测它是哪一种,是检查最后一次出现的。
可以通过
完成string input = "123.456.496,58"; //or 123,456,789.58
int lastComma = input.LastIndexOf(",");
int lastPeriod = input.LastIndexOf('.');
NumberFormatInfo format = new NumberFormatInfo();
if (lastComma > lastPeriod) {
format.NumberDecimalSeparator = ',';
format.NumberGroupSeparator = '.';
} else {
format.NumberDecimalSeparator = '.';
format.NumberGroupSeparator = ',';
}
double parsed = Double.Parse(intput, format);
当小数点分隔符后面有一个组分隔符时,这会失败,并且可以使用其他语义来更改它(即,如果只有一个非数字字符,那么一个是小数点分隔符。如果有多个非数字特殊字符,其中一个只出现一次,即小数分隔符)
最后解析一个格式未知的字符串需要一些猜测。
如果你不是在试图解析数字,而是在做一些完全不同的事情,请忽略这个答案,然后选择其中一个。
答案 2 :(得分:0)
if (yourString.Contains(".")) { youString = yourString.Replace(".", ","); }