我想删除特殊字符,例如:
- + ^ . : ,
来自使用Java的String。
答案 0 :(得分:228)
这取决于您定义为特殊字符的内容,但请尝试replaceAll(...)
:
String result = yourString.replaceAll("[-+.^:,]","");
请注意,^
字符不能是列表中的第一个字符,因为您必须要转义它,否则它将意味着“除了这些字符之外的任何字符”。
另一个注意事项:-
字符必须是列表中的第一个或最后一个字符,否则您必须转义它或者它将定义一个范围(例如:-,
意味着“全部:
到,
范围内的字符。
因此,为了保持一致性而不依赖于字符定位,您可能希望转义所有在正则表达式中具有特殊含义的字符(以下列表不完整,因此请注意其他字符,如{{ 1}},(
,{
等。):
$
如果你想摆脱所有的标点符号和符号,试试这个正则表达式:String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
(请记住,在Java字符串中你必须使用反斜杠:\p{P}\p{S}
)。
第三种方式可能是这样的,如果你能准确定义你的字符串中应该留下什么:
"\\p{P}\\p{S}"
这意味着:替换不是单词字符的所有内容(在任何情况下为a-z,0-9或_)或空格。
编辑:请注意,还有一些其他模式可能会有所帮助。但是,我无法解释所有内容,因此请查看regular-expressions.info的参考部分。
正如Ray所建议的那样,这里是“定义允许字符”方法的限制性较小的替代方法:
String result = yourString.replaceAll("[^\\w\\s]","");
正则表达式匹配任何语言中不是字母的所有内容,而不是分隔符(空格,换行符等)。请注意,您不能使用String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
(大写字母P表示没有该属性),因为这意味着“所有不是字母或不是空格的东西”,几乎匹配所有内容,因为字母不是空白和反之亦然。
有关Unicode的其他信息
一些unicode字符似乎由于编码它们的不同可能方式(作为单个代码点或代码点组合)而导致问题。有关详细信息,请参阅regular-expressions.info。
答案 1 :(得分:16)
如此处所述 http://developer.android.com/reference/java/util/regex/Pattern.html
模式是编译正则表达式。在许多情况下,
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
答案 2 :(得分:14)
尝试replaceAll()
类的String
方法。
BTW这里是方法,返回类型和参数。
public String replaceAll(String regex,
String replacement)
示例:
String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!";
str = str.replaceAll("[-+^]*", "");
它应该删除您要删除的所有{'^','+',' - '}字符!
答案 3 :(得分:12)
这将替换除字母数字
以外的所有字符replaceAll("[^A-Za-z0-9]","");
答案 4 :(得分:3)
删除特殊字符
String t2 = "!@#$%^&*()-';,./?><+abdd";
t2 = t2.replaceAll("\\W+","");
输出将是:abdd.
这很有效。
答案 5 :(得分:2)
在Java中使用String.replaceAll()
方法。
replaceAll应该足以解决您的问题。
答案 6 :(得分:1)
您可以按如下方式删除单个字符:
String str="+919595354336";
String result = str.replaceAll("\\\\+","");
System.out.println(result);
输出:
919595354336
答案 7 :(得分:0)
如果您只想在java中进行文字替换,请使用Pattern.quote(string)
将任何字符串转义为文字。
myString.replaceAll(Pattern.quote(matchingStr), replacementStr)