@ ABC
@ ABCCD
@CDSFSF
@SDDSD
@SFSFS
数量为100000字 我需要代码从所有单词序列中删除@符号。
答案 0 :(得分:4)
答案 1 :(得分:1)
实施它的最快方法当然是replaceFirst方法:
String exampleValue = "@ CDSFSF";
long start = System.currentTimeMillis();
for (int i = 0; i < 100000 ; i++) {
exampleValue.replaceFirst("^@\\s+", "");
}
long end = System.currentTimeMillis();
System.out.println(end - start);
我的电脑大约需要350毫秒。
但replaceFirst方法为每次调用创建Pattern实例。
String exampleValue = "@ CDSFSF";
Pattern pattern = Pattern.compile("^@\\s+");
long start = System.currentTimeMillis();
for (int i = 0; i < 100000 ; i++) {
pattern.matcher(exampleValue).replaceFirst("");
}
long end = System.currentTimeMillis();
System.out.println(end - start);
我的电脑大约需要150毫秒。快两倍以上。
但是,如果您的所有案例看起来像“@ XXXXX”,您可以编写一个代码,找到单词中的第一个字母,然后获取substring:
String exampleValue = "@ CDSFSF";
long start = System.currentTimeMillis();
for (int i = 0; i < 100000 ; i++) {
char[] array = exampleValue.toCharArray();
int c = 0;
for (; c < array.length;c++) {
if (Character.isLetter(array[c])) {
break;
}
}
exampleValue.substring(c);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
我的电脑大约需要30毫秒。最快的一个。
如果我是你,我会使用Pattern类的第二个解决方案,因为它简单而快速。
答案 2 :(得分:0)
从所有单词中删除@
(?<=\s|^)@
所以它会是
str.replaceAll("(?<=\\s|^)@", "");