这是一些基本的简单代码,我想要处理string
。根据我的要求,我必须将.
替换为,
,以便进一步string
到double
解析。对于某种原因 .
s不会被替换。
示例代码:
string[] pointArray = "3066.4735709236,4659.65039509825".Trim().Split(',');
foreach (var point in pointArray)
{
point.Replace('.',',');
}
//just checking for `.` in those strings
//a MessageBox pops up, because there are still `.` in the strings
Array.ForEach(pointArray, foo => { foo.Contains('.'); MessageBox.Show("has been not replaced"); });
我忽略了什么?
答案 0 :(得分:1)
string[] pointArray = "3066.4735709236,4659.65039509825".Trim().Split(',');
for (int i = 0; i < pointArray.Length; i++)
{
pointArray[i] = pointArray[i].Replace('.',',');
}
字符串不可变,您必须设置值。
(只需注意,你必须使用for循环,因为foreach不允许修改item
。)
答案 1 :(得分:0)
您可以使用linq
将源字符串转换为双精度数组:
var srcString = "3066.4735709236,4659.65039509825";
var doubles = srcString
.Trim()
.Split(',')
.SelectMany(s => s.Split('.').Select(double.Parse))
.ToArray();
此代码会将您的字符串拆分为,
,然后按.
拆分,并将每个子字符串转换为双倍