Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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_String_Pattern Matching - Fatal编程技术网

Java 消除单词的多眼点

Java 消除单词的多眼点,java,regex,string,pattern-matching,Java,Regex,String,Pattern Matching,如何删除字符串中多次出现的单词?难的是,我不知道它是哪个词。参见下面的示例 这就是我如何尝试将一个段落拆分为一个句子的方法,但有一个问题我的段落包括2014年1月13日这样的日期,单词包括美国和数字这样的日期 在这里,有些词有多次出现。像句子,日期,包括和如何这样的词已经出现了不止一次。注意,此重复可能不会发生在彼此附近,如包含。我想删除这些,所以它会像下面 这就是我试图将一段文字拆分成一个句子的方式,但有一个问题,我的段落包括2014年1月13日之类的日期,U和数字之类的单词 请注意,删除多个

如何删除
字符串中多次出现的单词
?难的是,我不知道它是哪个词。参见下面的示例

这就是我如何尝试将一个段落拆分为一个句子的方法,但有一个问题我的段落
包括2014年1月13日这样的日期,单词
包括美国和数字这样的日期

在这里,有些词有多次出现。像
句子
日期
包括
如何
这样的词已经出现了不止一次。注意,此重复可能不会发生在彼此附近,如
包含
。我想删除这些,所以它会像下面

这就是我试图将一段文字拆分成一个句子的方式,但有一个问题,我的段落包括2014年1月13日之类的日期,U和数字之类的单词

请注意,删除多个匹配项并不意味着删除多个匹配项的所有匹配项。它只需保留一个副本,然后删除其余的副本

就像上面所说的,将会有非常大的
字符串
s,我不知道哪个单词出现过不止一次。我怎样才能做到这一点

您可以使用:

String rtsruoy = new StringBuilder(yourstr).reverse().toString();

String tluser = rtsruoy.replaceAll("(?s)(\\b[a-zA-Z]{3,}+\\b)(?=.*?\\1)", "");

String result =  new StringBuilder(tluser).reverse().toString();

注意:我选择了3作为最小字母数,你可以选择你想要的。

一次复制一个单词,忽略重复的字母。使用哈希集跟踪重复项

像这样的

String text = "This is how how I tried to split a paragraph into a sentence sentence But, there is a problem My paragraph includes dates dates dates dates like Jan 13, 2014 , words includes like U S and numbers"; 
StringBuilder result = new StringBuilder();
HashSet<String> set = new HashSet<String>();
for(String s : text.split(" ")) {
    if (!set.contains(s)) {
        result.append(s);
        result.append(" ");
        set.add(s);
    }
}
System.out.println(result);
String text=“这就是我如何尝试将一个段落拆分为一个句子的方法,但是,有一个问题,我的段落包括2014年1月13日这样的日期,单词包括如U和数字”;
StringBuilder结果=新建StringBuilder();
HashSet=newhashset();
用于(字符串s:text.split(“”){
如果(!set.contains){
结果。追加(s);
结果。追加(“”);
设置。添加(s);
}
}
系统输出打印项次(结果);
你需要稍微润色一下以正确处理标点符号,但这应该可以让你开始了。

你可以使用:

String original=“这就是我如何尝试将一个段落拆分为一个句子的方法,但是,有一个问题,我的段落包括2014年1月13日之类的日期,单词包括如U和数字”;
System.out.println(新的LinkedHashSet(Arrays.asList(original.split(“”)).toString().replace(“,”,”);
这将返回:

[这就是我试图把一段话分成一句话的方式,但是 我的问题包括2014年1月13日之类的日期、U和数字]


当我测试这个(用java)时,它似乎只删除了连续的重复项,而不是分散在文本中的重复项。谢谢你的回复。但是你似乎应该首先知道要替换的单词(1)@TedBigham:我已经修改了代码来处理不连续的单词。(我没有很好地阅读这个问题)@gloryofsucces:我已经编辑了我的答案,它删除了除第一个单词以外的所有3个字母或更多的重复单词。我认为没有要求3个字母或更多。你为什么把课文倒过来?这似乎只会影响删除的单词是从开头还是结尾。看起来代码片段是对的
String original = "This is how how I tried to split a paragraph into a sentence sentence But, there is a problem My paragraph includes dates dates dates dates like Jan 13, 2014 , words includes like U S and numbers";
System.out.println(new LinkedHashSet<String>(Arrays.asList(original.split(" "))).toString().replace(", ", " "));