Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用正则表达式从第一个单词中删除@符号?_Java_Regex - Fatal编程技术网

如何在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()
。我想你还需要类似于use
String.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字符。。太好了。请随意使用;)