C# 删除字符串数组的最后一个元素?
C# Removing Last Element of a string Array?
我正在解析 XML 文件中的一组坐标。每个节点的坐标如下:
-82.5,34.1,0.000 -82.6,34.2,0.000
在下面的代码中,coords_raw 变量已经分配了上面的值,我试图拆分成数组 lnglatset
——这看起来没问题。
string[] lnglatset = raw_coords.Split(' ');//will yield like [0]=-82.00,34.00,00000 // Will need to get rid of the last set of zeros
foreach (string lnglat in lnglatset)
{
Console.WriteLine(lnglat);//-82.5,34.1,0.000; looks fine
}
根据以上,最终需要的值是:
coords = "-82.5 34.1, -82.6 34.2";//note the space between lng/lat
但是如何从数组的每个元素中删除垃圾值 0.000 并在每个元素的 lng 和 lat 值之间放置一个 space 而不是逗号?我在 lnglat
上尝试了一些 remove() 函数,但在 foreach
循环中不允许这样做。谢谢!
您可以使用Take
方法获取除最后一个部分之外的所有部分:
var parts = raw_coords.Split(' ')
.Select(x => x.Split(','))
.Select(x => string.Join(" ", x.Take(x.Length - 1)));
var result = string.Join(",", parts);
您不能在 ForEach 期间更改 IEnumerable 的成员。相反,您可以在拆分原始坐标输入时跳过最后一个成员。
raw_coords.split(' ').Take(2).ToArray()
在一行中:
String result = String.Join(" ", raw_coords.Split(' ', ',')
.Select(i => double.Parse(i))
.Where(i => i != 0).Select( i => i.ToString()));
它删除每个 0.000 元素并删除 space 和逗号。
正如其他人提到的,您不能使用 foreach 修改迭代变量。我通过艰难的方式学会了它并最终使用简单的 "for" 循环而不是 foreach:
for(int index=0; i<lnglatset.length-2; i++)
{
}
您可以使用 System.Linq 的 IEnumerable.Last() 扩展方法。
string lastItemOfSplit = aString.Split(new char[] {@"\"[0], "/"[0]}).Last();
我正在解析 XML 文件中的一组坐标。每个节点的坐标如下:
-82.5,34.1,0.000 -82.6,34.2,0.000
在下面的代码中,coords_raw 变量已经分配了上面的值,我试图拆分成数组 lnglatset
——这看起来没问题。
string[] lnglatset = raw_coords.Split(' ');//will yield like [0]=-82.00,34.00,00000 // Will need to get rid of the last set of zeros
foreach (string lnglat in lnglatset)
{
Console.WriteLine(lnglat);//-82.5,34.1,0.000; looks fine
}
根据以上,最终需要的值是:
coords = "-82.5 34.1, -82.6 34.2";//note the space between lng/lat
但是如何从数组的每个元素中删除垃圾值 0.000 并在每个元素的 lng 和 lat 值之间放置一个 space 而不是逗号?我在 lnglat
上尝试了一些 remove() 函数,但在 foreach
循环中不允许这样做。谢谢!
您可以使用Take
方法获取除最后一个部分之外的所有部分:
var parts = raw_coords.Split(' ')
.Select(x => x.Split(','))
.Select(x => string.Join(" ", x.Take(x.Length - 1)));
var result = string.Join(",", parts);
您不能在 ForEach 期间更改 IEnumerable 的成员。相反,您可以在拆分原始坐标输入时跳过最后一个成员。
raw_coords.split(' ').Take(2).ToArray()
在一行中:
String result = String.Join(" ", raw_coords.Split(' ', ',')
.Select(i => double.Parse(i))
.Where(i => i != 0).Select( i => i.ToString()));
它删除每个 0.000 元素并删除 space 和逗号。
正如其他人提到的,您不能使用 foreach 修改迭代变量。我通过艰难的方式学会了它并最终使用简单的 "for" 循环而不是 foreach:
for(int index=0; i<lnglatset.length-2; i++)
{
}
您可以使用 System.Linq 的 IEnumerable.Last() 扩展方法。
string lastItemOfSplit = aString.Split(new char[] {@"\"[0], "/"[0]}).Last();