String.Split(char [] delimiter)を使用して配列がデータを取得するプログラムがあります。 (区切り文字として「;」を使用します。)
ただし、一部の値はnullです。つまり文字列にはデータがない部分があるため、次のようになります。
1; 2; ; 3;
これにより、配列にnull値が含まれます。
それらを取り除くにはどうすればよいですか?
これを試して:
yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
Where linq拡張メソッドを使用して、null以外または空の値のみを返すことができます。
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;
}
データを分割する前に、隣接する複数のセミコロンを1つのセミコロンに置き換える必要があります。
これにより、2つのセミコロンが1つのセミコロンに置き換えられます。
datastr = datastr.replace(";;",";");
ただし、セミコロンが2つ以上ある場合は、正規表現の方が適しています。
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はスペースです