0

問題が発生しました。

「。」の後に来るものはすべて分割したい。

たとえば、次の文があるとします。

「ダニーは学校に行きました。素晴らしかったです。」

私の出力が

ダニーは学校に行きました。

すばらしかった。

それによって簡単に解決できます:

string[] list = currentResult.Split(new string[] { ". " }, StringSplitOptions.None);

しかし!

たとえば、次のようにします。

  1. ダニーは学校に行きました。and : 2. ジェームズも学校に行きました。

私の出力は次のようになります:

1.

ダニーは学校に行きました。と :

2.

ジェームスも学校に行きました

.

たとえば、ドットの前に数字がある場合に分割したくありません。なんとか解決できますか?

ありがとう!

4

3 に答える 3

1

ここでの問題は、奇妙にフォーマットされたデータを処理する方法です。データを制御できる場合は、1. と 2. の代わりに 1) と 2) を使用することを検討してください。ただし、これが当てはまらない場合は、正規表現に頼って、.a が行の一部または行の終わりを識別する必要がある場合があります。この機能は、の機能を超えているためです。String.Split

于 2013-05-01T15:02:10.100 に答える
1

常に文字ごとに移動して、次のようなことを行うことができます。

注:テストされていませんが、正しく見えます:)

List<string> strings = new List<string>();
int curStart = 0;
for(int index=0;index<str.Length;index++) {
    if(index > 0) {
        if(str[index] == '.') {
            if(!char.IsNumeric(str[index-1])) {
                strings.Add(str.SubString(curStart, index-curStart));
                curStart = index + 1;
            }
        }
    }
}
于 2013-05-01T15:10:21.367 に答える
0

コメントは、あなたが望むもののより広い範囲で意味をなすので、あなたが尋ねるものに一致する回答を作成することに挑戦すると思いました。

C# コードで正規表現を使用する方法については、http: //www.dotnetperls.com/regex-matchesを参照してください。

http://regexpal.com/を使用して正規表現を確認しました。そのページまたは類似のページをいじって、正規表現を理解してください。正規表現の方法を知っておく価値があります。

正規表現のコマンドと定義のリストについては、 http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheetまたは他の場所を参照してください。

正規表現 ".*?\D[.||:]\s" は文字列を次のように変換します。

1. Danny went to School. and : 2. James went to school as well. Danny went to school. it was wonderful. 

次の一致に (ここでは改行で区切られています):

1. Danny went to School. 
and : 
2. James went to school as well. 
Danny went to school. 
it was wonderful. 

あなたの例ではそうしているので、「:」に基づいて自由に一致を分離することに注意してください。

于 2013-05-01T15:28:41.900 に答える