java - 检查字符串是否有特定的词

标签 java string

我的 String words 包含一堆由 \n 分隔的单词(并以 \n 结尾)。 代码将单词添加到字符串中,前提是该单词不存在。这些代码块位于 for 循环中,w 是要添加的词。

我有

loop: if (w.contains("" + letter)) //This is just to test the words I want to add
{
  for (String s : words.split("\n"))
    if (w.equals(s))
      break loop;
  words += w + "\n";
}

if (w.contains("" + letter))
{
  if (!words.contains("\n"+w+"\n") && words.indexOf(w+"\n") != 0)
    words += w + "\n";
}

但两者都以各自的方式看起来很困惑。有没有其他方法可以解决这个问题,或者哪种方法执行得更快。

最佳答案

首先,if 不是一个循环。所以没有必要标记它以便使用标记的中断。

其次,您的两个代码都没有真正按照您所说的去做。另外,我不明白你为什么要做 if (w.equals(s)) 这个测试。 w 的用途是什么。

你说:- w 是要添加的单词,但你又说了一遍,你将在 "\n" 上拆分字符串后添加单词>,如果它不在您的 array 中。因此,您要添加很多词,而不仅仅是一个词。请重新阅读您的帖子,并在必要时进行编辑。


根据您当前的问题陈述,我会这样处理:-

  • 首先在 "\n" 上拆分您的行以获得包含单个单词的数组。
  • 如果我想在每次迭代时修改我的字符串,我宁愿使用 StringBuilderStringBuffer
  • 现在,在每次迭代中,检查您的 StringBuilder 是否已经包含该 word。如果不包含,则附加它,否则保留它。
  • 在循环结束时,打印您的 StringBuilder 实例。

或者,正如您所说,您也可以使用 ArrayList 来存储您的单词。或者,如果您只需要 unique 单词,则应该改用 Set。那不需要你做测试。它自己处理重复项:-

List<String> wordList = new ArrayList<String>();

Set<String> set = new LinkedHashSet<String>();

for (String s : words.split("\n")) {

    if (s.contains("" + letter)) {

        if (!wordList.contains(s)) {
            wordList.add(s);   // Add to list. 
        }
        set.add(s);   // Add to set.
    }
}

然后通过遍历它们中的任何一个来打印您的 ArrayListSet

关于java - 检查字符串是否有特定的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489419/

相关文章:

java - 是什么让 Spring Boot 控制台丰富多彩?

java - Java中with extend有哪些方法可以设置上限

java - 我的程序没有以执行器返回/结束

java - 是否有可能为 2^14 个音频帧实现 65 微秒 FFT?

swift - 在 Swift 中,String.CharacterView 实例的计数是否在所有情况下都始终等于 startIndex 和 endIndex 之间的距离?

C++ 字符串转换

java - Spring Security无法加载资源: the server responded with a status of 404

java - 如何使用Java将合并排序数组int代码格式化为数组字符串代码?

Python——字符串

javascript - JS 拆分变量