2

編集:私がやろうとしていることを具体的に反映するようにタイトルを変更しました。

.NET で現在のカルチャのすべての英数字 (またはできればアルファベットのみ) を取得する方法はありますか? 私のシナリオは、すべての数字とアルファベット以外の文字を削除する必要があるいくつかの文字列があり、英語以外の言語のアルファベットを尊重しながらこれを実装する方法がよくわかりません (すべての配列を作成することを除いて) .NET でサポートされているすべての言語、または少なくとも現在のクライアントの言語のアルファベット文字 (笑)

アップデート:

具体的には、私がやろうとしているのは、文字列の先頭から最初のアルファベット文字まで、そして最後のアルファベット文字から文字列の最後まで、アルファベット以外のすべての文字をトリミングすることです。したがって、en-US のランダムな例として、次のようにします。

()&*1@^#47*^#21%Littering aaaannnnd(*&^1#*32%#**)7(#9&^

以下に:

Littering aaaannnnd

英語は私の母国語なので、これを行うのは簡単ですが、実際にはどの文化でも、文字列から数字やその他の英数字以外の文字を削除できる必要があります。

4

3 に答える 3

1
   string something = "()&*1@^#47*^#21%Littering aaaannnndóú(*&^1#*32%#**)7(#9&^";
   string somethingNew = Regex.Replace(something, @"[^\p{L}-\s]+", "");

これはあなたが探しているものですか?

編集: 他の言語の文字を許可するために追加されました。これにより、Pittering aaaannnndóú が出力されます。

于 2013-06-18T15:01:46.633 に答える
1

正規表現メソッドを使用すると、これはうまくいくはずです:

string input = "()&*1@^#47*^#21%Littering aaaannnnd(*&^1#*32%#**)7(#9&^";
string result = Regex.Replace(input, "(?:^[^a-zA-Z]*|[^a-zA-Z]*$)", ""); //TRIM FROM START & END
于 2013-06-18T15:01:57.853 に答える
0

正規表現を使用しない場合: Java では、次のことができます。

while (true) {
    if (word.length() == 0) {
        return ""; // bad
    }

    if (!Character.isLetter(word.charAt(0))) {
        word = word.substring(1);
        continue; // so we are doing front first
    }
    if (!Character.isLetter(word.charAt(word.length()-1))) {
        word = word.substring(0, word.length()-1);
        continue; // then we are doing end
    }
    break; // if front is done, and end is done
}

他の何かを使用している場合は、Java で Character.isLetter を置き換えるのは非常に簡単です。文字エンコーディングを検索するだけで、アルファベット文字の整数値が見つかります。それを使用してそれを行うことができます。

于 2014-10-08T19:44:08.427 に答える