我有一个像这样的字符串:
-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
更为有效。