c# - 如何将字符串拆分为有效的方式c#

标签 c# string

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

 -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/

相关文章:

R如何用新的子字符串替换较长字符串中的子字符串

c# - 如何在 C# 中截断列表?

c# - SSIS 4000 字符限制问题

c# - 无法在 .Net Core 3.1 中的 Web Api 中使用 Cors

c# - 具有关系的动态 Linq "Where statement"

c++ - 如何在 C++ 中将文件中的段落作为单个字符串读取

c++ - 如何在数组中存储地址 - C++?

c# - .NET ReactiveExtension 观察器未捕获 OnError 中的错误

php - 获取字符串包含 php pdo 的行

python - 可选择替换子字符串 python