用于匹配Java

时间:2016-03-02 02:23:37

标签: java regex string

我正在尝试创建一个程序来检查程序当前正在查看的字符串是否包含该特定顺序中的单词ing。我想通过空格分割字符串,因此每个单词都可以单独查看。我被困在if状态。 if条件确定单词是否包含在其中。对于赋值,我只能使用一个循环和两个if语句。我不能使用字符串方法tolower或upppercase。这也是输出需要的样子:(对于输出我有一个测试类,它给我字符串测试)

带有词的词: 唱歌跳舞

如果我没有找到任何单词,那么输出应该是这样的 没有任何关于

的文字

这是我的code直到现在:

public class EndsWith
{
   public static void endsWithIng (String s)
   {       
      String[] a = s.splits(" ");
      for(int i = 0; i < a.length; i++)
      {          
         // if()
         System.out.print(a[i] + "");          
      }     
   }
}

2 个答案:

答案 0 :(得分:1)

我找到了问题的答案。我忘了提到问题还需要一个特定的打印声明(确保投票,因为我忘了提及我的任务的另一个标准)。我的解决方案是类似的,但我创建了一个新的字符串,并添加了我发现的新字符串中的任何单词。我还使用了一个计数器来跟踪是否首先找到带有ing的单词。如果它不是我在循环后打印没有发现的词。

 public class EndsWith
{// start of cLASS
   public static void endsWithIng (String s)
     {// START of method
      String ing="";
      String compare="";
      String [] a = s.split(" ");
       //System.out.println("Words with ing: ");

      int i;
      int count=0;
      for(i=0;i<a.length;i++)
      {//start of for


         compare=a[i];

         if(compare.matches(".*[iI][nN][gG].*"))
         { //start of if

                //System.out.print(compare + " ");
                count++;        
                 ing+=a[i] +" ";
           }




       }
             if(count==0)
             {
               System.out.println("There are no words with ing");
              }
              else
              {
               System.out.println("Words with ing: ");
               System.out.println(ing);
              }

}
}

答案 1 :(得分:0)

我认为您希望拆分一个(或多个)空格字符。您也可以使用String.endsWith(String) 1 。像,

public static void endsWithIng(String s) {
    String[] a = s.split("\\s+");
    for (int i = 0; i < a.length; i++) {
        if (a[i].toLowerCase().endsWith("ing")) {
            System.out.print(a[i] + " ");
        }
    }
}

您可以使用enhanced for-each loop,例如 2

public static void endsWithIng(String s) {
    String[] a = s.split("\\s+");
    for (String value : a) {          // <-- for each value in array a
        // This checks if the last three characters make the String "ing"
        if ("ing".equalsIgnoreCase(value.substring(value.length() - 3))) {
            System.out.print(value + " ");
        }
    }
}

要使用正则表达式,超出String.split(String),您可以{/ 3}}使用

public static void endsWithIng(String s) {
    String[] a = s.split("\\s+");
    for (String value : a) { // <-- for each value in array a
        // This test ignores case for iI nN gG
        if (value.matches(".*[(i|I)(n|N)(g|G)]$")) {
            System.out.println(value);
        }
    }
}

1 您添加了不能使用toLowerCase的规定。下次,为了更快地提供更好的帮助,请在提出问题时提供所有要求。

2 此示例使用String.matches(String)