在java中使字符串不区分大小写

时间:2015-09-08 13:52:31

标签: java string search case-sensitive case-insensitive

我在我的应用程序中有一个问题我有一个String,其中包含一个搜索词,然后我用这个词来搜索一个长文本,我想要包含所搜索单词的所有单词返回(例如WoRd = word = WORD)。感谢。

private static int countWords(String tstr1, String string)
    {   
        int i = 0;
        Scanner s = new Scanner(tstr1);

        while (s.hasNext()) 
        {
            if (s.next().equals(string)) 
                i++;

        }

        return i;
    }
}

String tstr1是文本,String string是搜索的密钥,现在我想要计算搜索密钥在文本中的次数(不区分大小写)。感谢

5 个答案:

答案 0 :(得分:3)

您要找的是equalsIgnoreCase班级的String

  

public boolean equalsIgnoreCase(String anotherString)

     

将此String与另一个String进行比较,忽略大小写。如果两个字符串具有相同的长度并且两个字符串中的相应字符等于忽略大小写,则认为它们是相等的忽略大小写。

您也可以使用toLowerCase()toUpperCase(),但我认为使用equalsIgnoreCase()更具可读性。

Bathsheba指出,这也更有效。这是因为equalsIgnoreCase()将在发生不匹配时立即停止比较字符串。

有关此here的更多信息。也请阅读this

答案 1 :(得分:1)

java.lang.String有一个方法boolean equalsIgnoreCase(String anotherString),这就是你应该在这里使用的方法。

在调用.equals()之前,最好将字符串转换为小写或大写字母。这样做需要你完全对两个字符串进行操作,而equalsIgnoreCase可以在第一个不匹配时退出。

答案 2 :(得分:1)

在这种情况下,我们使用Pattern类在所有情况下都不区分大小写。 例如:

import java.util.regex.Pattern;

/**
*
* @author developerbhuwan
*/
public class HowToUseCaseInsensitive {

   public static void main(String[] args) {
       String searchKey = "cAt";
       String searchOn = "Cat is an animal";

      // In searchOn String is present but when
      // we use contains method of string then not found
      // due to case sensitive comparision
      if (searchOn.contains(searchKey)) {
          System.out.println("Cat found in searchIn String");
      } else {
          System.out.println("Cat not found in searchIn String");
      }

     // Output => Cat not found in searchIn String
     // To achieve case insensitive comparison
     // perfect solution for all case is by using
     // Pattern class as below
     if (Pattern.compile(Pattern.quote(searchKey),
        Pattern.CASE_INSENSITIVE).matcher(searchOn).find()) {
          System.out.println("Cat found in searchIn String");
    } else {
          System.out.println("Cat not found in searchIn String");
    }
   // Now Output => Cat found in searchIn String
  }
}

答案 3 :(得分:0)

要计算不区分大小写的段落中的单词,我们还使用Pattern类和while循环:

例如:

public class CountWordsInParagraphCaseInsensitive {


    public static void main(String[] args) {
        StringBuilder paragraph = new StringBuilder();
        paragraph.append("I am at office right now.")
                .append("I love to work at oFFicE.")
                .append("My OFFICE located at center of kathmandu valley");
        String searchWord = "office";
        Pattern pattern = Pattern.compile(searchWord, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(paragraph);
        int count = 0;
        while (matcher.find())
            count++;
        System.out.println(count);

    }

}

答案 4 :(得分:0)

尝试一下:

if (string1.equalsIgnoreCase(string2)){
    Do.somthing 
}else{etc.}

注意:方法equals()继承自Object,因此不应更改其签名。