69

単純な文字列入力の解析を行っていますが、文字列トークナイザーが必要です。私は C# は初めてですが、Java をプログラミングしたことがあります。C# に文字列トークナイザーが必要なのは当然のことです。そうですか?それはどこにある?どうやって使うの?

4

11 に答える 11

118

String.Split メソッドを使用できます。

class ExampleClass
{
    public ExampleClass()
    {
        string exampleString = "there is a cat";
        // Split string on spaces. This will separate all the words in a string
        string[] words = exampleString.Split(' ');
        foreach (string word in words)
        {
            Console.WriteLine(word);
            // there
            // is
            // a
            // cat
        }
    }
}

詳細については、C# での文字列の分割に関する Sam Allen の記事(パフォーマンス、正規表現)を参照してください。

于 2008-09-16T08:43:55.097 に答える
24

C# の Split メソッドの威力を強調し、より詳細な比較を、特に Java のバックグラウンドを持つ人から提供したいと思います。

Java の StringTokenizer は単一の区切り文字のみを許可しますが、実際には複数の区切り文字に分割して、正規表現の必要性を少なくすることができます (ただし、正規表現が必要な場合は、必ず正規表現を使用してください!) 例を次に示します。

str.Split(new char[] { ' ', '.', '?' })

これは、トークンの配列を返す 3 つの異なる区切り文字で分割されます。上記の例の 2 番目のパラメーターとなるものを使用して、空の配列を削除することもできます。

str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries)

Java の String トークナイザーが持っていることの 1 つは、C# に欠けていると私が信じていること (少なくとも Java 7 にはこの機能があります) は、区切り文字をトークンとして保持する機能です。C# の Split はトークンを破棄します。これは、一部の NLP アプリケーションでは重要になる可能性がありますが、より汎用的なアプリケーションでは問題にならない場合があります。

于 2013-09-19T21:21:43.427 に答える
19

文字列の分割方法が必要です。実際、Java のトークナイザー クラスは、Java の文字列分割メソッドを支持して廃止されました。

于 2008-09-16T08:41:40.330 に答える
3

.NET Framework で最も近いのは

文字列.Split()
于 2008-09-16T08:40:05.200 に答える
2

複雑な分割の場合、一致コレクションを作成する正規表現を使用できます。

于 2008-09-16T08:46:57.697 に答える
2

Javaのメソッドに似ているのは次のとおりです。

Regex.Split(string, pattern);

どこ

  • string- 分割する必要があるテキスト
  • pattern- 文字列型パターン、テキストを分割しているもの
于 2016-09-02T19:56:52.617 に答える
2
_words = new List<string>(YourText.ToLower().Trim('\n', '\r').Split(' ').
            Select(x => new string(x.Where(Char.IsLetter).ToArray()))); 

または

_words = new List<string>(YourText.Trim('\n', '\r').Split(' ').
            Select(x => new string(x.Where(Char.IsLetterOrDigit).ToArray()))); 
于 2015-06-10T23:21:50.327 に答える
1

使用するRegex.Split(string,"#|#");

于 2009-07-30T11:10:22.007 に答える
0

これを読んでください、分割関数にはオーバーロードがあり、セパレータで構成される配列を取ります http://msdn.microsoft.com/en-us/library/system.stringsplitoptions.aspx

于 2009-11-12T08:25:57.687 に答える
-2

C#3.5を使用している場合は、必要な分割を行う拡張メソッドをSystem.Stringに記述できます。その後、構文を使用できます。

string.SplitByMyTokens();

詳細とMSの便利な例はこちらhttp://msdn.microsoft.com/en-us/library/bb383977.aspx

于 2008-09-16T08:50:17.407 に答える