如何在Java中使用正则表达式从第一个单词中删除@符号?
我有 像这样的单词序列如何在Java中使用正则表达式从第一个单词中删除@符号?,java,regex,Java,Regex,我有 像这样的单词序列 @ ABC @ ABCCD @CDSFSF @SDDSD @SFSFS 10万字 我需要代码从所有单词序列中删除@符号。您可以这样做: str = str.replaceAll("^@", ""); 您可以执行以下操作: str = str.replaceAll("^@", ""); 从所有单词中删除@ (?<=\s|^)@ (?从所有单词中删除@) (?<=\s|^)@ (?实现它的最快方法,当然是方法: String exampleValue=“
@ ABC
@ ABCCD
@CDSFSF
@SDDSD
@SFSFS
10万字
我需要代码从所有单词序列中删除@符号。您可以这样做:
str = str.replaceAll("^@", "");
您可以执行以下操作:
str = str.replaceAll("^@", "");
从所有单词中删除@
(?<=\s|^)@
(?从所有单词中删除@)
(?<=\s|^)@
(?实现它的最快方法,当然是方法:
String exampleValue=“@cdsfsfsf”;
长启动=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
exampleValue.replaceFirst(“^@\\s+”,”);
}
long end=System.currentTimeMillis();
System.out.println(结束-开始);
在我的电脑上大约需要350毫秒
但该方法为每个调用创建实例
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);
String exampleValue=“@cdsfsfsf”;
Pattern=Pattern.compile(“^@\\s+”);
长启动=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
pattern.matcher(exampleValue).replaceFirst(“”);
}
long end=System.currentTimeMillis();
System.out.println(结束-开始);
在我的电脑上大约需要150毫秒,快了两倍多
但是,如果您的所有案例看起来像“@XXXXX”,您可以编写一个代码,找到单词的第一个字母,然后再得到:
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);
String exampleValue=“@cdsfsfsf”;
长启动=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
char[]数组=exampleValue.toCharArray();
int c=0;
对于(;c
在我的电脑上大约需要30毫秒。最快的一个
如果我是你,我会在课堂上使用第二种解决方案,因为它简单快速。实现它的最快方法当然是方法:
String exampleValue=“@cdsfsfsf”;
长启动=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
exampleValue.replaceFirst(“^@\\s+”,”);
}
long end=System.currentTimeMillis();
System.out.println(结束-开始);
在我的电脑上大约需要350毫秒
但该方法为每个调用创建实例
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);
String exampleValue=“@cdsfsfsf”;
Pattern=Pattern.compile(“^@\\s+”);
长启动=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
pattern.matcher(exampleValue).replaceFirst(“”);
}
long end=System.currentTimeMillis();
System.out.println(结束-开始);
在我的电脑上大约需要150毫秒,快了两倍多
但是,如果您的所有案例看起来像“@XXXXX”,您可以编写一个代码,找到单词的第一个字母,然后再得到:
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);
String exampleValue=“@cdsfsfsf”;
长启动=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
char[]数组=exampleValue.toCharArray();
int c=0;
对于(;c
在我的电脑上大约需要30毫秒。最快的一个
如果我是你,我会在类中使用第二种解决方案,因为它简单而快速。使用String.replace()
。我想你还需要类似于useString.replace()的东西
。我想你也需要像@karu 1000000这样的数字,我怀疑你是否会在循环中看到问题。@Some1.Kill.The.DJ然后他需要在循环中这样做,一次一行(看起来他每行有一个单词).@karu start position可以是一行的开头或一个单词中的第一个字符…你想要什么?@dasblinkenlight谢谢,明白了!访问语料库需要时间。代码工作正常。。@Some1.Kill.the.DJ@ആവാം @ കൊല്ലം @ ഹൈവേ 这是我需要的话ആവാം 而不是@ആവാം 单词按行排列line@karu1000000不是一个很大的数字,我怀疑你是否会在循环中看到问题。@Some1.Kill.The.DJ然后他需要在循环中这样做,一次一行(看起来他每行有一个单词).@karu start position可以是一行的开头或一个单词中的第一个字符…你想要什么?@dasblinkenlight谢谢,明白了!访问语料库需要时间。代码工作正常。。@Some1.Kill.the.DJ@ആവാം @ കൊല്ലം @ ഹൈവേ 这是我需要的话ആവാം 而不是@ആവാം 单词按行排列line@mykhalo,对我来说,你的第三种方法非常适合,因为我的文字包含Unicode字符。。太好了。请随意使用;@mykhalo,对我来说,你的第三种方法非常适合,因为我的文字包含Unicode字符。。太好了。请随意使用;)