我想从字符串中删除这些字符:
+ - ! ( ) { } [ ] ^ ~ : \
我也想删除它们:
/*
*/
&&
||
我的意思是我不会删除&
或|
如果第二个字符跟在第一个字符后面,我将删除它们/* */ && ||
如何在Java上高效快速地完成这项工作?
示例:
a:b+c1|x||c*(?)
将是:
abc1|xc*?
答案 0 :(得分:1)
这可以通过很长的,但实际上是very simple regex来完成。
String aString = "a:b+c1|x||c*(?)";
String sanitizedString = aString.replaceAll("[+\\-!(){}\\[\\]^~:\\\\]|/\\*|\\*/|&&|\\|\\|", "");
System.out.println(sanitizedString);
答案 1 :(得分:1)
我认为java.lang.String.replaceAll(String regex,String replacement)就是你所需要的:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll(java.lang.String,java.lang.String)。
答案 2 :(得分:0)
Thomas在How to remove special characters from a string?上写道:
这取决于您定义为特殊字符的内容,但请尝试 的replaceAll(...):
String result = yourString.replaceAll("[-+.^:,]","");
请注意,^字符不能是列表中的第一个字符,因为 你要么必须逃避它,要么意味着“除了这些之外的任何东西 字符”。
另一个注意事项: - 角色需要是第一个或最后一个 列表,否则你必须逃避它或它将定义一个范围( 例如: - ,意思是“范围内的所有字符:to,”。
所以,为了保持一致性而不依赖于性格 定位,你可能想要逃避所有那些拥有的角色 正则表达式中的特殊含义(以下列表不是 完成,所以要注意其他字符,如(,{,$ etc。):
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
如果你想摆脱所有标点和符号,试试这个正则表达式: \ p {P} \ p {S}(请记住,在Java字符串中你必须逃脱 反斜杠:“\ p {P} \ p {S}”)。
第三种方式可能是这样的,如果你可以准确定义 应该在你的字符串中留下什么:
String result = yourString.replaceAll("[^\\w\\s]","");
这是“定义允许的字符”的限制性较小的替代方案 方法,正如Ray所说:
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
正则表达式匹配任何语言中不是字母的所有内容 不是分隔符(空格,换行符等)。请注意,您无法使用 [\ P {L} \ P {Z}](大写字母P表示没有该属性),因为那样 意思是“所有不是字母或不是空白的东西”,这些 几乎匹配一切,因为字母不是空白和副 反之亦然。
答案 3 :(得分:0)
有两种方法可以做到:
1)
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("+");
arrayList.add("-");
arrayList.add("||");
arrayList.add("&&");
arrayList.add("(");
arrayList.add(")");
arrayList.add("{");
arrayList.add("}");
arrayList.add("[");
arrayList.add("]");
arrayList.add("~");
arrayList.add("^");
arrayList.add(":");
arrayList.add("/");
arrayList.add("/*");
arrayList.add("*/");
String string = "a:b+c1|x||c*(?)";
for (int i = 0; i < arrayList.size(); i++) {
if (string.contains(arrayList.get(i)));
string=string.replace(arrayList.get(i), "");
}
System.out.println(string);
2)
String string = "a:b+c1|x||c*(?)";
string = string.replaceAll("[+\\-!(){}\\[\\]^~:\\\\]|/\\*|\\*/|&&|\\|\\|", "");
System.out.println(string);