2010-11-26 47 views
63

私は多くの特殊文字を含む文字列を持っています。私はそれらすべてを削除したいが、アルファベットの文字を維持する。文字列内の特殊文字を置き換える方法は?

どうすればいいですか?

+0

このスレッドを見る:http://stackoverflow.com/questions/3438854/replace-unicode-control-characters-existing-solution –

答えて

146

どういう意味ですか。
(アップデート:どうやらあなたは数字を維持するだけでなく、その場合、第2のラインを使用したい)

String alphaOnly = input.replaceAll("[^a-zA-Z]+",""); 
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+",""); 

または同等:

あなただけそれらを取り除くしたい場合は、これを行います
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+",""); 
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+",""); 
Guava

または、(これらの全てが有意正規表現パターンをプリコンパイルし、一定に格納することによって改善することができる):

private static final CharMatcher ALNUM = 
    CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z')) 
    .or(CharMatcher.inRange('0', '9')).precomputed(); 
// ... 
String alphaAndDigits = ALNUM.retainFrom(input); 

しかし、あなたはこれらの質問を見て、それはまだアスキーだ賢明な何かにアクセント付き文字をオンにする場合:

+0

ありがとうFloyditそれはfine.but 1つの問題があります – Tanu

+0

私はこの機能を使用していますそれも同様にすべての数字を削除しています。しかし、私は数字を削除する必要はありません。ちょうど特殊な文字を削除したい。何かを提案してください.. – Tanu

+0

よくあなたはアルファベットがほしいと言った。しかし、私は1分で私の答えを更新します –

0

することができます文字列の基本正規表現を使用してすべての特殊文字を検索するか、パターンとマッチャーのクラスを使用して、ユーザー定義の文字列を検索/変更/削除します。このリンクでは、正規表現の例を簡単にわかりやすく説明しています。http://www.vogella.de/articles/JavaRegularExpressions/article.html

55

私はこれを使用しています。

s = s.replaceAll("\\W", ""); 

これは、stringのすべての特殊文字を置き換えます。

ここ

ワット\:あなたはジャンクにUnicodeを得ることができます非単語の文字

+4

これは良いことですが、スペースを削除します。 –

+3

スペースを削除したくない場合はどうすればいいですか –

+0

では機能しません。 '<', '>'、 '\'文字を削除するには? – Manoj

0

:単語W \ [-ZA-Z_0-9]のための短い文字、

ウィンドウのPCのcharactermapツールからの文字を追加し、\ u例えば著作権シンボルは\ u00a9です。 この文字列をその特定の迷惑メールに使用することができます。迷惑メールを削除するのではなく、適切なユニコードに置き換えてください。

4

次の方法を使用して、英数字を維持できます。

replaceAll("[^a-zA-Z0-9]", ""); 

そして、あなたはアルファベットのみを保持したい場合はスペース、カンマ、アンパサンドを除くすべての特殊文字が置き換えられているここでは、この

replaceAll("[^a-zA-Z]", ""); 
+0

もスペースを削除します – Jasper

+0

スペースのために 'replaceAll(" [^ a-zA-Z0-9] "、" ");' – Qamar

1
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", ""); 

を使用しています。スペース、カンマ、アンパサンドを次の正規表現で省略することもできます。

string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", ""); 

ここで、入力は文字を置き換える必要がある文字列です。

関連する問題