我在VS2008中编写VB.NET。
我有逗号分隔的数字字符串,即16,7,99,1456,1,3
我在VB中这样做:
Dim MyArr() As String = MyString.Split(",")
MyArr会按照字符串中的顺序保留项目吗?
如果我这样做:
For Each S as String in MyString.Split(",")
'Do something with S
'Will my items be in the same order they were
'in the string?
Next
我测试了它,它似乎保持排序顺序,但它会〜总是〜保持顺序?
如果它没有维护订单,那么分割字符串并保持顺序的好方法是什么?
我问,因为MSDN Array文档说:“不保证数组的排序。”所以我有点不确定。
答案 0 :(得分:7)
是的,在您的示例中,项目将保留原始顺序。
MSDN文档表明,Array不一定只是因为它是一个Array而被排序,但是一旦这些项在Array中,它们就不会被重新排列。 Split()操作将根据给定的标记将其分解,保留顺序。
答案 1 :(得分:1)
是的,将保留这些操作的订单。
答案 2 :(得分:1)
是的,String.Split沿着字符串向下走,一切都会按顺序排列。来自.NET Reflector:
private string[] InternalSplitKeepEmptyEntries(int[] sepList, int[] lengthList, int numReplaces, int count)
{
int startIndex = 0;
int index = 0;
count--;
int num3 = (numReplaces < count) ? numReplaces : count;
string[] strArray = new string[num3 + 1];
for (int i = 0; (i < num3) && (startIndex < this.Length); i++)
{
strArray[index++] = this.Substring(startIndex, sepList[i] - startIndex);
startIndex = sepList[i] + ((lengthList == null) ? 1 : lengthList[i]);
}
if ((startIndex < this.Length) && (num3 >= 0))
{
strArray[index] = this.Substring(startIndex);
return strArray;
}
if (index == num3)
{
strArray[index] = Empty;
}
return strArray;
}
答案 3 :(得分:-1)
在.NET中,字符串是immutable objects。简而言之,字符串S和Split(“,”)返回的字符串存在于不同的记忆中。