Ответ 1
Попробуйте следующее:
yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
У меня есть программа, в которой массив получает свои данные, используя string.Split(char [] delimiter). (используя ';' в качестве разделителя.)
Некоторые значения, однако, равны нулю. То есть строка содержит части, где нет данных, поэтому она делает что-то вроде этого:
1; 2;; 3;
Это приводит к тому, что мой массив имеет нулевые значения.
Как я могу избавиться от них?
Попробуйте следующее:
yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
Вы можете использовать метод расширения Where where, чтобы возвращать ненулевые или пустые значения.
string someString = "1;2;;3;";
IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s));
public static string[] nullLessArray(string[] src)
{
Array.Sort(src);
Array.Reverse(src);
int index = Array.IndexOf(src, null);
string[] outputArray = new string[index];
for (int counter = 0; counter < index; counter++)
{
outputArray[counter] = src[counter];
}
return outputArray;
}
Вы должны заменить несколько соседних точек с запятой на одну точку с запятой до разделения данных.
Это заменит две точки с запятой на одну точку с запятой:
datastr = datastr.replace(";;",";");
Но если у вас более двух точек с запятой, регулярное выражение будет лучше.
datastr = Regex.Replace(datastr, "([;][;]+)", ";");
words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word.Trim(',')+ "\r\n";
d++;
}
charseparators - это пространство