String.Splitまたはregexを使用して、文字列を文字列の配列に分割し、区切り文字の間にないセクションを削除することは可能ですか?

ルーク

以下の例のように、メソッド(MethodToSplitIntoArray(String toSplit)など)を使用して、異なる部分間で既知の区切り文字を使用して文字列を文字列の配列に分割したいと考えていました。値は、「{」以外の任意の文字を使用できる文字列値です。 、 '}'、または '、'なので、他の文字で区切ることはできません。ファイルは複数の異なるソースから生成される可能性があるため、文字列の最初と最後に不要な空白を含めることもできます。必要な情報もその間にあります。 "{" "}"で、コンマで区切ります。

String valueCombined = " {value},{value1},{value2} ";

String[] values = MethodToSplitIntoArray(valueCombined);

foreach(String value in values)
{
    //Do something with array
    Label.Text += "\r\nString: " + value;
}

ラベルが表示される場所:

文字列:値
文字列:value1
文字列:value2

分割方法の現在の実装は以下のとおりです。値を分割しますが、最初の括弧の前のスペースとその間のスペースが含まれます。

private String[] MethodToSplitIntoArray(String toSplit)
{
    return filesPassed.Split(new string[] { "{", "}" }, StringSplitOptions.RemoveEmptyEntries);
}

これにより中括弧の間の文字列が分離され、残りの文字列が削除されますが、出力は次のとおりです。

文字列:
文字列:値
文字列:、
文字列:value1
文字列:、
文字列:value2
文字列:

括弧の外に文字列値がまだ表示されているという分割で何が間違っていますか?理想的には、可能であれば正規表現またはString.Splitを使用したいと思います。

同様の問題を抱えている人は、分割に関するDotNetPerlをチェックしてください。

ピーター・ドゥニホ

中括弧ペア内ではコンマが許可されておらず、中括弧ペアの外側ではコンマまたは空白のみが表示されると仮定すると、これにアプローチする最も簡単で読みやすい方法は、最初に分割することです。カンマで、次にその結果をトリミングし(空白を削除するため)、最後に最初と最後の文字を削除します(その時点では中括弧のみである必要があります)。

valuesCombined.Split(',').Select(s => s.Trim().Substring(1, s.Length - 2)).ToArray();

最初の分割操作に中括弧を含めると、すべてが難しくなり、識別しにくい方法で破損する可能性が高くなると思います(つまり、悪いデータは、上記のようなものを使用する場合よりも奇妙な結果になります)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ