如何用另一个字符串替换一个字符串
本文关键字:字符串 一个 替换 何用 另一个 | 更新日期: 2023-09-27 17:50:25
我想制作一个对字符,
或.
不敏感的程序作为输入,以便在不考虑应该使用哪个符号来分离整数部分和小数部分的情况下进行一些计算。
我能想到的唯一方法是识别输入字符串,检查是否有.
并将其替换为,
,因为我的cultureType只接受,
。
if(inputString.Any(x => x == '.'))
{
inputString = inputString.Replace('.', ',');
}
我猜测(这不是你的问题),你试图解析一个小数,数字可能有一个小数分隔符,没有千位分隔符,它可能是,
,它可能是.
一个可能的启发式猜测它是哪一个,是检查最后一次出现。
这可以通过
完成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);
当小数点分隔符后面有一个组分隔符时,会失败,并且可以使用其他启发式方法来更改它(例如,如果只有一个非数字字符,则该字符是小数点分隔符)。如果有多个非数字特殊字符,并且其中一个只出现一次,那就是小数分隔符)
最后,解析格式未知的字符串需要一些猜测。
如果您不是在尝试解析数字,而是在做完全不同的事情,请忽略此答案,并选择其他答案之一。
if (yourString.Contains(".")) { youString = yourString.Replace(".", ","); }