DOBON.NET DOBON.NETプログラミング掲示板過去ログ

英単語を抜き出したい

環境/言語:[Windows 7、VS2010 C#]
分類:[.NET]

C#にて、日本語と英語が混じった文章から英単語のみ配列に抜き出したいのですが、下記以外の方法で高速にできるやり方はないのでしょうか。

1.アルファベットが出てくるまで1文字ずつ読み捨てる。
2.アルファベットが出たら、アルファベット以外が出てくるまで1文字ずつ保存する。
3.アルファベット以外が出てきたら、次の配列要素に入れる準備する
■No30925に返信(K.Mさんの記事)
> 下記以外の方法で高速にできるやり方はないのでしょうか。
ピリオドやアンダーバー、ダブルクォーテーション、数字などといった
「アルファベット以外」の英文構造の扱いが曖昧ですが、とりあえず
正規表現を使ってみては如何でしょうか。


using System;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private void button1_Click(object sender, EventArgs e)
        {
            // 元となる文章
            string src = textBox1.Text;

            // 単語抜出
            var q = from Match w in Regex.Matches(src, @"[a-zA-Z]+") select w.Value;

            // 配列として取り出す
            string[] words = q.ToArray();

            // ListBox で確認
            listBox1.DataSource = words;
        }

        
        public Form1()
        {
            InitializeComponent();
        }
    }
}
ありがとうございました。
こんな簡単なやり方があったんですね。
参考にします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板