如何从string中删除特殊字符?

我想删除特殊字符,如:

- + ^ . : , 

从使用Java的string。

这取决于你定义的特殊字符,但是尝试replaceAll(...)

 String result = yourString.replaceAll("[-+.^:,]",""); 

请注意, ^字符不能是列表中的第一个字符,因为您必须转义它,否则将意味着“除这些字符外的任何字符”。

另一个注意: -字符必须是列表中的第一个或最后一个,否则你将不得不逃生它或定义一个范围(例如:-,意思是“范围内的所有字符:到)。

所以,为了保持一致性而不依赖于字符的定位,你可能想逃避所有那些在正则expression式中有特殊含义的字符(以下列表不完整,所以要注意其他字符,如{$等等。):

 String result = yourString.replaceAll("[\\-\\+\\.\\^:,]",""); 

如果你想摆脱所有的标点和符号,试试这个正则expression式: \p{P}\p{S} (请记住,在Javastring中,你必须避免反斜杠: "\\p{P}\\p{S}" )。

第三种方法可能是这样的,如果你可以准确地定义你的string应该留下什么:

 String result = yourString.replaceAll("[^\\w\\s]",""); 

这意味着:取代所有不是单词字符(az,无论如何,0-9或_)或空格。

编辑:请注意,有一些其他模式可能会有帮助。 不过,我不能全部解释,所以看看regular-expressions.info的参考部分。

Ray提出的“定义允许的字符”方法的限制性较less:

 String result = yourString.replaceAll("[^\\p{L}\\p{Z}]",""); 

正则expression式匹配任何不是任何语言的字母而不是分隔符(空格,换行符等)的东西。 请注意,您不能使用[\P{L}\P{Z}] (大写字母P表示不具有该属性),因为这意味着“所有不是字母或不空白的东西”,几乎匹配所有内容,因为字母不是空格,反之亦然。

有关Unicode的更多信息

一些unicode字符似乎由于不同的可能的编码方式(作为单个码点或码点的组合)而引起问题。 请参阅regular-expressions.info获取更多信息。

尝试String类的replaceAll()方法。

BTW这里是方法,返回types和参数。

 public String replaceAll(String regex, String replacement) 

例:

 String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!"; str = str.replaceAll("[-+^]*", ""); 

它应该删除所有你想删除的{'^','+',' – '}字符!

如此处所述http://developer.android.com/reference/java/util/regex/Pattern.html

模式是编译正则expression式。 在许多情况下,像String.matchesString.replaceAllString.split这样的便利方法将是可取的,但是如果您需要使用相同的正则expression式进行大量的工作,编译一次并重用可能会更有效率它。 Pattern类及其伴侣Matcher也提供比String暴露的less量更多的function。

 public class RegularExpressionTest { public static void main(String[] args) { System.out.println("String is = "+getOnlyStrings("!&(*^*(^(+one(&(^()(*)(*&^%$#@!#$%^&*()(")); System.out.println("Number is = "+getOnlyDigits("&(*^*(^(+91-&*9hi-639-0097(&(^(")); } public static String getOnlyDigits(String s) { Pattern pattern = Pattern.compile("[^0-9]"); Matcher matcher = pattern.matcher(s); String number = matcher.replaceAll(""); return number; } public static String getOnlyStrings(String s) { Pattern pattern = Pattern.compile("[^az AZ]"); Matcher matcher = pattern.matcher(s); String number = matcher.replaceAll(""); return number; } } 

结果

 String is = one Number is = 9196390097 

使用Java中的String.replaceAll()方法。 replaceAll应该足够你的问题。

删除Specail字符

String t2 =“!@#$%^&*() – ';,。/?> <+ abdd”;

t2 = t2.replaceAll(“\\ W +”,“”);

输出将是:abdd。

这完美的作品。

您可以删除单个字符如下:

 String str="+919595354336"; String result = str.replaceAll("\\\\+",""); System.out.println(result); 

OUTPUT:

 919595354336 

如果你只是想在java中进行文字replace,可以使用Pattern.quote(string)将任何string转义为文字。

 myString.replaceAll(Pattern.quote(matchingStr), replacementStr)