我正在尝试将字符串转换为double(然后转换为int),但是会引发异常。我的程序很旧,我不确定是否是这种情况。 当我在Visual Studio 2017上对其进行测试时,它似乎可以正常工作?
string line = "11-03-1-01 | 1 | 5 000,00|1054 |P:1|KP:|RB:";
private static int GetCount(string line)
{
var splittedLine = line.Split('|');
var lineWithReplacedDot = splittedLine[2].Replace('.', ',');
var lineWithSpacesRemoved = lineWithReplacedDot.Replace(" ", "");
var additionalSpacesRemoved = lineWithSpacesRemoved.Trim();
var parsedToDouble = Double.Parse(additionalSpacesRemoved);
var parsedToInteger = (int)parsedToDouble;
return parsedToInteger;
}
当我在旧程序上执行此操作时,在尝试执行Double.Parse(additionalSpacesRemoved)时会引发Format Exception。 似乎并不能消除5到000之间的空格。
我也尝试了Convert.ToDouble(additionalSpacesRemoved),但没有帮助。还有其他方法吗?
我希望达到“ 5000”。
答案 0 :(得分:0)
似乎您想将第三个字符串用|
分隔为int
。
您的代码几乎正确。您只是颠倒了参数'.', ','
的顺序。它们应该是',', '.'
。您要替换的字符优先。这是一些工作代码:
private static int GetCount(string line)
{
return (int)Convert.ToDouble(
line.Split('|')[2]
.Replace(" ", "")
.Replace(',', '.'));
}
答案 1 :(得分:0)
尝试一下
static void Main(string[] args)
{
string line = "11-03-1-01 | 1 | 5 000,00|1054 |P:1|KP:|RB:";
Debug.WriteLine(GetCount(line));
// 5000
}
public static int GetCount(string line)
{
var parts = line.Split('|');
var text = parts[2].Trim();
var style = new NumberFormatInfo()
{
NumberDecimalSeparator=",",
NumberGroupSeparator=" "
};
if (decimal.TryParse(text,
NumberStyles.Float | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
style, out decimal result))
{
return (int)result;
}
return 0;
}