将一个字符替换为字符串中的另一个字符

时间:2018-02-07 16:01:44

标签: c# replace

这是一些基本的简单代码,我想要处理string。根据我的要求,我必须将.替换为,,以便进一步stringdouble解析。对于某种原因 . 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"); });

我忽略了什么?

2 个答案:

答案 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();

此代码会将您的字符串拆分为,,然后按.拆分,并将每个子字符串转换为双倍