在字符串中找到n个单词

时间:2018-02-23 17:20:11

标签: java

for循环中,我想读取字符串line,检查下一个单词是否为数字,得到它。

循环定义了我想要的出现次数。 i=1,第一次出现行,i=2,第二次等等......

String output = "line 10 bla bla bla line 20, line 30"
for(int i=1;i<=3;i++) {
    Scanner scanner = new Scanner(output);
            while(scanner.hasNext()) {
                String word = scanner.next();    
                if(word.equals("line")) {
                    if(scanner.hasNext()) {
                        String nextWord = scanner.next().replaceAll("[^\\d]", "");
                        if(nextWord.chars().allMatch(Character::isDigit)) {
                            //I want to stop reading and Just go to the next loop and check for the i occurence
                        }
                    }
                }
            }
      }

输出

  

i=1 - &gt; 10

     

i=2 - &gt; 20

     

i=3 - &gt; 30

3 个答案:

答案 0 :(得分:0)

您可以使用字符串数组分别保存所有单词,然后检查数组中的&#34; line&#34;以及后续数字。

String output = "line 10 bla bla bla line 20, line 30"
int i=0;
int occurences=0;
String[] wordArray=new String[50];
Scanner scanner = new Scanner(output);
            while(scanner.hasNext()) {
            wordArray[i++]=scanner.next();
            }
for(i=0;i<wordArray.length;i++)
{
   if(wordArray[i].equals("line"))
    {
      System.out.println("occurence: "+ ++occurences);
      if(wordArray[i+1].matches("\\d+")
      System.out.println(wordArray[i+1]);
      else
      System.out.println("not a number");
    }
}           

答案 1 :(得分:0)

如果您的问题只是如何打破内循环,那么这就是解决方案:

/base-site-template/public

答案 2 :(得分:0)

你可以先读取整行并删除逗号,然后将空格分隔的单词存储在一个String数组中,以检查单词&#34; line&#34;之后的下一个单词。是一个使用try catch块的数字。如果它是一个数字,它将被保存为int。

字符串输出=&#34;第10行bla bla bla line 20,第30行&#34 ;;

    output = output.replaceAll(",","");
    String[] words = output.split(" ");
    for(int i = 0; i<words.length-1;i++){
        if(words[i].equals("line")){
           try{
               Integer.parseInt(words[i+1]);
               System.out.println("is number");
               int digit = Integer.parseInt(words[i+1]);
               System.out.println("Digit is " +digit);

           }
           catch(NumberFormatException e){
             System.out.println("is not a number");

           }
        }
    }