【问题标题】:How do I account for whitespaces when counting words in a String? [duplicate]计算字符串中的单词时如何考虑空格? [复制]
【发布时间】:2020-01-31 23:05:22
【问题描述】:

我编写了以下代码来计算给定字符串的字数。但是,它不考虑空格。我将如何在下面的代码中实现 Character.isWhitespace(text.charAt(i)) 以检查双空格?我对 Java 比较陌生。

字符串变量:文本

字符位置:i

    import java.util.Scanner;
    public class Workbook {
    public static void main(String[] args) {
        String w;
        int Count = 0;
        Scanner V1 = new Scanner(System.in);
        System.out.println("Enter word: ");
        w = V1.nextLine();
        for(int i = 0; i<w.length()-1; i++){
                if (w.charAt(i) == ' ' && w.charAt(i + 1) != ' ') {
                    Count++;
                }

        }
        System.out.println("Number of words: " + (Count+1));
    }
}

示例问题是,如果我有一个示例字符串“Hello nice to meet you!”将输出 6 个单词 - 这是正确的

但是“Hello nice to meet you!”输出 6 个单词而不是 5 个。

【问题讨论】:

标签: java for-loop if-statement boolean


【解决方案1】:

将单词拆分成一个字符串数组,在修剪原始单词后以一个或多个空格字符分隔

String word = " Hello nice to meet you! ";

String[] words = word.trim().split( "\\s{1,}" ); // split all the words (after trimming)  into an array, seperating on one or more white space characters
System.out.println( words.length ); // output 5

【讨论】:

  • 正如您在问题下的 cmets 中看到的那样,此解决方案已在另一个问题中提供,因此此问题重复。所以请不要重复这样的答案,而是将此问题标记为重复。
  • 这不是一个完整的答案 Tom.... 链接的答案是针对 how to split a String on spaces 上的一个问题...它也没有提供所需的修剪
  • 问题的细微差别
  • 问题不重要,答案重要。关于修剪:How to split a String by space
  • The question don't matter...我有点不同意你的观点
【解决方案2】:

您应该使用修剪删除尾随和起始空格。否则即使第一个空格和下一个非空格字符之间没有单词,计数也会增加一。

【讨论】:

    【解决方案3】:

    句子前后的空格会导致问题。 此外,您可以直接计算如下单词:

    String sentence = "Hello nice to meet you! ";
    String[] wordSplit = (sentence.trim()).split(" ");
    int count = wordSplit.length;
    

    【讨论】:

      【解决方案4】:

      也许你可以使用StringTokenizer

              String input = " Hello nice to meet you!";
              StringTokenizer stringTokenizer = new StringTokenizer(input);
              System.out.println(stringTokenizer.countTokens());
      
              while (stringTokenizer.hasMoreTokens()) {
                  System.out.println(stringTokenizer.nextToken());
              }
      
      

      【讨论】:

        猜你喜欢
        • 2022-08-02
        • 2013-07-22
        • 1970-01-01
        • 2016-03-31
        • 2016-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-21
        相关资源
        最近更新 更多