it-swarm-id.com

Apakah C # memiliki Tokenizer String seperti Java?

Saya melakukan parsing input string sederhana dan saya membutuhkan tokenizer string. Saya baru mengenal C # tetapi telah memprogram Java, dan tampaknya wajar bahwa C # harus memiliki tokenizer string. Melakukannya? Dimana itu? Bagaimana saya menggunakannya?

65
andrewrk

Anda dapat menggunakan metode 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
        }
    }
}

Untuk informasi lebih lanjut, lihat artikel Sam Allen tentang pemisahan string di c # (Kinerja, Regex)

115
Davy Landman

Saya hanya ingin menyoroti kekuatan metode Split C # dan memberikan perbandingan yang lebih rinci, terutama dari seseorang yang berasal dari latar belakang Java.

Sedangkan StringTokenizer dalam Java hanya membolehkan pembatas tunggal, kita sebenarnya dapat membaginya pada beberapa pembatas membuat ekspresi reguler menjadi kurang perlu (walaupun jika seseorang membutuhkan regex, gunakan regex dengan segala cara!) Ambil contoh ini:

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

Ini terbagi pada tiga pembatas yang berbeda mengembalikan array token. Kami juga dapat menghapus array kosong dengan apa yang akan menjadi parameter kedua untuk contoh di atas:

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

Satu hal tokenizer String Java memang memiliki yang saya percaya C # kurang (setidaknya Java 7 memiliki fitur ini) adalah kemampuan untuk menjaga pembatas sebagai token. C #'s Split akan membuang token Ini bisa menjadi penting dalam mengatakan beberapa aplikasi NLP, tetapi untuk aplikasi yang lebih umum ini mungkin tidak menjadi masalah.

21
demongolem

Metode split string adalah yang Anda butuhkan. Bahkan kelas tokenizer di Java sudah ditinggalkan karena metode string string Java).

18
Tim Jarvis

Saya pikir yang terdekat dalam .NET Framework adalah

 string.Split () 
3
Steve Morgan

Untuk pemisahan kompleks, Anda bisa menggunakan regex untuk membuat koleksi pertandingan.

2
Stevo3000
_words = new List<string>(YourText.ToLower().Trim('\n', '\r').Split(' ').
            Select(x => new string(x.Where(Char.IsLetter).ToArray()))); 

Atau

_words = new List<string>(YourText.Trim('\n', '\r').Split(' ').
            Select(x => new string(x.Where(Char.IsLetterOrDigit).ToArray()))); 
2
Skyler

gunakan Regex.Split(string,"#|#");

1
adr

Mirip dengan metode Java adalah:

Regex.Split(string, pattern);

dimana

  • string - teks yang perlu Anda bagi
  • pattern - pola tipe string, apa yang membagi teks
0
neronovs

baca ini, fungsi split memiliki kelebihan mengambil array terdiri dari pemisah http://msdn.Microsoft.com/en-us/library/system.stringsplitoptions.aspx

0
Musa