【发布时间】:2015-06-09 09:39:52
【问题描述】:
我正在编写要删除重复单词的 java 代码。如果我在任何单词中有空格,则以下代码可以很好地删除它们,例如:
1298 Anthony 1298 Anthony,它会变成这样:
1298 Anthony
但对于任何其他特殊字符,例如:
1298 Anthony.ef 1298 Anthony.ef,它会显示如下:
ef. 1298 Anthony.
下面给出我的方法,我想让它适用于每个特殊字符,特别是:coma(,)、fullstop(.)、dash(-)、underscore(_)。请帮我解决这个问题。
public static void removeString(){
String name1 = "1298 Anthony.ef 1298 Anthony.ef";
String[] strArr = name1.split(" ");
Set<String> set = new HashSet<String>(Arrays.asList(strArr));
String[] result = new String[set.size()];
set.toArray(result);
StringBuilder res = new StringBuilder();
for (int i = 0; i < result.length; i++) {
String string = result[i];
if(i==result.length-1){
res.append(string);
}
else{
res.append(string).append(" ");
}
}
System.out.println(res.toString());
String abc = res.toString();
}
【问题讨论】:
-
好吧,我不知道我是否理解正确,但你可以尝试类似 name1.split("\\s|\\.|,|\\-")
-
我已经执行了你的代码,它产生了
1298 Anthony.ef。这不是你所追求的吗? -
而不是 name1.split((\\s|\p{Punct})+) 参见docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html 了解不同的字符类别。