我想要移除特殊字符,例如:
- + ^ . : ,
使用Java从一个字符串中获取数据。
这取决于您如何定义特殊字符,但尝试使用replaceAll(...)
:
String result = yourString.replaceAll("[-+.^:,]","");
请注意,正则表达式中的 ^
字符不可以是列表中的第一个字符,因为这样你要么需要对它进行转义,要么它会被解释成“除此之外的任何字符”。
另外一个需要注意的点是 -
字符必须是列表的第一个或最后一个字符,否则你需要对它进行转义,否则它会被解释成一个范围(例如 :-,
表示的是所有范围从 :
到 ,
的字符)。
因此,为了保持一致性并且不依赖于字符位置,请对所有在正则表达式中具有特殊含义的字符进行转义(以下列表并不完整,所以请注意其他字符,如 (
、{
、$
等):
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
如果您想要去除所有标点符号和符号,请尝试使用此正则表达式:\p{P}\p{S}
(请记住,在Java字符串中,您必须转义反斜杠:"\\p{P}\\p{S}"
)。String result = yourString.replaceAll("[^\\w\\s]","");
这意味着:替换所有不是单词字符(a-z任意大小写,0-9或_)或空格的内容。String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
该正则表达式可以匹配任何语言中不是字母和分隔符(空格、换行等)的所有内容。请注意,您不能使用[\P{L}\P{Z}]
(大写P表示不具有该属性),因为那样会意味着“所有不是字母或不是空白符的内容”,这几乎匹配了所有东西,因为字母不是空格,反之亦然。[^\\p{L}\\p{Z}]
似乎也会消除德语umlauts(ä,ö,ü)(至少对我来说是这样的:/),因此“正则表达式匹配任何语言中不是字母的内容”似乎并不完全正确。 - PeterString result = yourString.replaceAll("[^\\w\\s]","");
出现错误 无效的转义序列(有效的是 \b \t \n \f \r \" \' \\)
。 - Visruth"[^\\w\\s]"
。我也会在我的答案中修复这个错误。 - Thomas这将替换除了字母数字之外的所有字符
replaceAll("[^A-Za-z0-9]","");
如http://developer.android.com/reference/java/util/regex/Pattern.html所述:
Pattern是已编译的正则表达式。在许多情况下,像
String.matches
,String.replaceAll
和String.split
这样的便捷方法可能更可取,但如果您需要使用同一正则表达式进行大量工作,则编译一次并重复使用可能更有效率。 Pattern类及其伴侣Matcher还提供比String公开的少量功能更多的功能。
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("[^a-z A-Z]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
}
结果
String is = one
Number is = 9196390097
尝试使用 String
类的 replaceAll()
方法。
顺便说一下,这是方法的返回类型和参数。
public String replaceAll(String regex,
String replacement)
例子:
String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!";
str = str.replaceAll("[-+^]*", "");
此代码将删除您想要删除的所有 {'^','+',' - '} 字符!
去除特殊字符
String t2 = "!@#$%^&*()-';,./?><+abdd";
t2 = t2.replaceAll("\\W+","");
输出将为:abdd.
这个完美地运行。
String str="+919595354336";
String result = str.replaceAll("\\\\+","");
System.out.println(result);
919595354336
Pattern.quote(string)
将任何字符串转义为字面量。myString.replaceAll(Pattern.quote(matchingStr), replacementStr)
String
类的文档了吗?特别是寻找关键词“regex”;有一些方法,稍加思考就能告诉你如何继续... :) - Karl KnechtelreplaceAll
方法将它们替换掉。如果您有更奇特的要求,请编辑问题本身。 :) - Ray Toal