web-dev-qa-db-ja.com

C#配列のnull /空の文字列値を取り除く

String.Split(char [] delimiter)を使用して配列がデータを取得するプログラムがあります。 (区切り文字として「;」を使用します。)

ただし、一部の値はnullです。つまり文字列にはデータがない部分があるため、次のようになります。

1; 2; ; 3;

これにより、配列にnull値が含まれます。

それらを取り除くにはどうすればよいですか?

36
zohair

これを試して:

yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
112
Tamas Czinege

Where linq拡張メソッドを使用して、null以外または空の値のみを返すことができます。

string someString = "1;2;;3;";

IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s));
2
sgriffinusa
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;
}
2
Sameer Shaikh

データを分割する前に、隣接する複数のセミコロンを1つのセミコロンに置き換える必要があります。

これにより、2つのセミコロンが1つのセミコロンに置き換えられます。

datastr = datastr.replace(";;",";");

ただし、セミコロンが2つ以上ある場合は、正規表現の方が適しています。

datastr = Regex.Replace(datastr, "([;][;]+)", ";");
0
Blessed Geek
                words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);

                foreach (string Word in words)
                    {   
                        richTextBox1.Text += (d + 1)+ "  " + Word.Trim(',')+ "\r\n";
                        d++;
                    }

charseparatorsはスペースです

0
bjoiuzt