如何从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.matches
,String.replaceAll
和String.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)