【问题标题】:Find the number of characters till nth word in Java?在Java中查找直到第n个单词的字符数?
【发布时间】:2016-04-20 09:21:21
【问题描述】:

找出句子中第 n 个单词之前的字符数的最简单方法是什么?

例如。 :

String sentence = "Mary Jane and Peter Parker are friends."
int trigger = 5; //"Parker"

输出将是

字符数 = 20

任何帮助将不胜感激。 谢谢。

【问题讨论】:

    标签: java string count character


    【解决方案1】:

    最简单的方法就是循环字符串中的字符并计算空格的数量。

    以下为每个字符增加一个length 变量。当遇到空白时,我们会减少要读取的剩余空白的数量,当该数量达到 1 时,这意味着我们找到了想要的单词,因此我们跳出循环。

    public static void main(String[] args) {
        String sentence = "Mary Jane and Peter Parker are friends.";
        int trigger = 5; //"Parker"
    
        int length = 0;
        for (char c : sentence.toCharArray()) {
            if (trigger == 1) break;
            if (c == ' ') trigger--;
            length++;
        }
        System.out.println(length); // prints 20
    }
    

    【讨论】:

      【解决方案2】:
      public int getNumberOfCharacters(int nthWord){
          String sentence = "Mary Jane and Peter Parker are friends.";
      
          String[] wordArray = sentence.split(" ");
          int count = 0;
          for(int i=0; i<=nthWord-2 ; i++){
              count = count + wordArray[i].length();
          }
      
          return count + (nthWord-1);
      
      }`
      

      试试这个应该可以的

      【讨论】:

        【解决方案3】:

        使用正则表达式可以这样:

        public static void main(String[] args) {
            String sentence = "Mary Jane and Peter Parker are friends.";
            int trigger = 5;
        
            Pattern pattern = Pattern.compile(String.format("(?:\\S+\\s+){%d}(\\S+)", trigger - 1));
            Matcher matcher = pattern.matcher(sentence);
            matcher.find();
            System.out.println(matcher.group().lastIndexOf(" ") + 1);
        }
        

        由于可能存在重复,我正在费尽心思寻找准确的工作,而不是简单地indexOf("Parker")。

        正则表达式将匹配 N 个单词而不捕获并捕获 N+1 个单词。在您的情况下,它将匹配所有先前的单词直到您想要的单词并捕获下一个单词。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-20
          • 2018-02-06
          • 2021-11-08
          • 2019-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多