如何使数组不区分大小写

时间:2016-05-18 17:42:12

标签: java arrays

我正在编写一个方法,它接受一个字符串并搜索所有包含匹配子字符串的名称,但是如何制作

targetSubstring 

这是用户输入JTextField的名称和

namesArray[I].getname()

这是输入文件中存储在数组中的数据,不区分大小写?因此,当用户输入例如Sam时,我希望它能够找到Sammy和Isamer(因为它包含名称中的sam)。然而,为了实现这一点,我需要Sam不区分大小写。那我该怎么做呢?我尝试过.toLowerCase,因为我认为这样可行,但是我得到了不同的编译器错误。我只是使用.toLowerCase吗?这是我尝试使用.toLowerCase的最后一件事,但它不起作用。

   if (namesArray[i].getName().toLowerCase.contains(targetSubstring.toLowerCase))

这是方法......

  private void match(String targetSubstring)
  {
    displayArea.setText("");
    displayArea.append("FIND RESULTS for: " + targetSubstring);
    displayArea.append("\n");
    displayArea.append("\n Name               Best Decade");
    displayArea.append("\n---------------     ---------------");
    for (int i = 0; i < namesArray.length; i++) {
      if (namesArray[i].getName().contains(targetSubstring))
      {
        displayArea.append("\n" + namesArray[i].getName() + "      " +
                        namesArray[i].bestDecade());
      }
     }
  }

2 个答案:

答案 0 :(得分:3)

targetSubstring = targetSubstring.toUpper ();
for (int i = 0; i < namesArray.length; i++) {
  String theName = namesArray[i].getName();
  if (theName.toUpper ().contains(targetSubstring))
  {
    displayArea.append("\n" + theName + "      " + namesArray[i].bestDecade());
  }
 }

答案 1 :(得分:1)

或者你可以像Gregory建议的那样使用代码但是使用 来自org.apache.commons.lang的StringUtils

for (int i = 0; i < namesArray.length; i++) {
  String theName = namesArray[i].getName();
  if (StringUtils.containsIgnoreCase(theName, targetSubstring ))
  {
    displayArea.append("\n" + theName + "      " + namesArray[i].bestDecade());
  }
 }