0

firstname.middlename.lastnameを次のように分割する正規表現を探しています。

ファーストミドルラスト

ただし、ミドルネーム全体(姓と名の間のピリオドを含む)を削除します

これをテキストボックスに渡して、ユーザーに名と姓を表示します。

それが何か違いを生むなら、私はこれにwinformsを使用しています。


このフォーラムでの親切な人々の迅速な行動のおかげで、ここに私の解決策への答えがあります!:

        string strName =  Environment.UserName.ToString();
        strName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(strName.ToLower());

        String shortName = Regex.Replace(strName, @"[.]\w*[.]", " ");

        uxCreator.SelectedText = shortName;
4

3 に答える 3

4

正規表現を使用する差し迫った理由がない限り、私はもっと単純なものを選びます。

String fullName = "Harry.Bob.McGraw";
String[] names = fullName.Split('.');
String shortName = String.Format("{0} {1}", names[0], names[2]);

これにより、shortNameに短縮名が付けられます。

また、本当に正規表現が必要な場合は、

String fullName = "Harry.Bob.McGraw";
String shortName = Regex.Replace(fullName, @"[.]\w*[.]", " ");
于 2013-02-21T16:21:00.793 に答える
1

非常に単純なもの(分割なし)はどうですか?

string input = "Harry.Bob.McGraw";
string pattern = @"(?<=\w+)\.\w+\.(?=\w+)";

var result = Regex.Replace( input, pattern, " " );

// result = "Harry McGraw"

分割には同じ式を使用できます。

var result = Regex.Split( input, pattern );

// result[0] = "Harry"
// result[1] = "McGraw"

注:正規表現は、基本的にマトリンのものと同じです。これをより大きなテキスト本文に適用したい場合に備えて、ゼロ幅アサーション(別名ルックアラウンド)を含めました。

于 2013-02-21T16:33:02.337 に答える
0

正規表現は使用しません。文字列操作関数を使用する方が簡単です。

http://www.developerfusion.com/code/4398/string-manipulation-in-c/

于 2013-02-21T16:16:11.640 に答える