gpt4 book ai didi

c# - 将带逗号的字符串转换为 double

转载 作者:行者123 更新时间:2023-11-30 21:53:23 29 4
gpt4 key购买 nike

我有这样一个字符串:99 365 25,633 gghddhdf 35

我需要数组中的所有数字。我的问题是如何处理 25,633 因为 ','。我怎么也能得到这个号码?我的代码是:

public string campDiff(string lineStr1, string lineStr2)
{
int size;
string sum = null;
double num1;
double num2;
double number;

string[] lineArr1 = lineStr1.Split(' '); ;
string[] lineArr2 = lineStr2.Split(' ');

if (lineArr1.Length > lineArr2.Length)
{
size = lineArr1.Length;
}
else
{
size = lineArr2.Length;
}

for (int i = 0; i < size; i++)
{

if (Double.TryParse(lineArr1[i], out num1))
{


if (Double.TryParse(lineArr2[i], out num2))
{

number = num2 - num1;
if (number > 0)
{
sum = Convert.ToString(number);
return sum;
}
}
}
}
return sum;
}

但它会跳过带逗号的数字。

最佳答案

有很多可能的解决方案。虽然,我认为最好的方法是将 CultureInfo 设置为 Invariant,然后用点替换所有逗号。例如:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
string number = "3,2";
double d = double.Parse(number.Replace(",", "."));
Console.WriteLine(d);

在你的代码中会这样:

    double[] numbers1 = 
lineStr1.Replace(",", ".")
.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
.Select(s =>
{
double value;
bool success = double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out value);

return new { value, success };
})
.Where(p => p.success)
.Select(p => p.value)
.ToArray();

double[] numbers2 =
lineStr2.Replace(",", ".")
.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
.Select(s =>
{
double value;
bool success = double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out value);

return new { value, success };
})
.Where(p => p.success)
.Select(p => p.value)
.ToArray();

现在您有两个数组 numbers1 和 numbers2,其中所有可能的数字都是从两个字符串 lineStr1 和 lineStr2 解析而来的>。你决定如何处理它们,因为我无法完全理解你的方法的目的。

(感谢评论中的所有人让我编辑我的答案。)

关于c# - 将带逗号的字符串转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896663/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com