我有一个像这样的字符串:

 -82.9494547,36.2913021,0
 -83.0784938,36.2347521,0
 -82.9537782,36.079235,0


我需要这样的输出:

 -82.9494547 36.2913021, -83.0784938 36.2347521, -82.9537782,36.079235


我已经尝试以下代码来实现所需的输出:

string[] coordinatesVal = coordinateTxt.Trim().Split(new string[] { ",0" }, StringSplitOptions.None);

        for (int i = 0; i < coordinatesVal.Length - 1; i++)
        {
            coordinatesVal[i] = coordinatesVal[i].Trim();
            coordinatesVal[i] = coordinatesVal[i].Replace(',', ' ');

            numbers.Append(coordinatesVal[i]);

            if (i != coordinatesVal.Length - 1)
            {
                coordinatesVal.Append(", ");
            }

        }


但是在我看来,这个过程并不是专业的解决方案。任何人都可以建议更有效的方法吗?

最佳答案

您的代码还可以。您可以取消临时结果和链式方法调用

var numbers = new StringBuilder();
string[] coordinatesVal = coordinateTxt
    .Trim()
    .Split(new string[] { ",0" }, StringSplitOptions.None);
for (int i = 0; i < coordinatesVal.Length - 1; i++) {
    numbers
        .Append(coordinatesVal[i].Trim().Replace(',', ' '))
        .Append(", ");
}
numbers.Length -= 2;


注意,最后一条语句假定至少有一个坐标对可用。如果坐标可以为空,则必须将循环和最后一个语句括在if (coordinatesVal.Length > 0 ) { ... }中。这比在循环内添加if更为有效。

10-07 13:17
查看更多