我有一个像这样的字符串:
-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
更有效。
关于c# - 如何将字符串拆分为有效的方式c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54962653/