【问题标题】:Trying to find whitespaces in String试图在字符串中查找空格
【发布时间】:2018-03-07 14:58:10
【问题描述】:

我想查找我的字符串中是否有空格,如果有,打印是否有空格,如果有,打印字符串中最长的单词。

到目前为止我所做的是:

private static void stringFunc() {

    String s = new String("Crying to be heard");
    String rts = " ";
    String word[] = s.split(rts);

    for (int i = 0; i < word.length; i++) {
        if (word[i].length() >= rts.length()) {
            rts = word[i];
        }
    }
    System.out.println(rts);

}

【问题讨论】:

  • 如果没有空格,您认为word[] 会发生什么?还要注意第一行应该写成:String s = "Crying to be heard";
  • “在任何地方都找不到”并不是对您问题的很好描述。究竟是什么不工作?你找不到什么?
  • 1.你能澄清你的要求吗? 2. 什么不工作?通过一点测试,我会说它按预期工作
  • @LuiggiMendoza rts 更改
  • 您的实际问题是什么?该代码似乎有效。

标签: java string


【解决方案1】:

你已经把问题中最长的单词部分排序了,你只需要确定原始字符串是否包含空格。

正如 assylias 所暗示的,如果字符串中没有空格,您需要考虑您创建的数组中有多少项。如果那是正确的,那么您就没有空格。如果没有,您需要运行代码的“最长单词”部分。

【讨论】:

    【解决方案2】:
    private static void stringFunc() {
        String s = new String("Crying to be heard");
        String[] splits = s.split("\\s+");
        int largeIndex = -1;
        int maxLen = 0;
    
        if (splits.length > 1) {
            for (int i = 0; i < splits.length; i++) {
                if (maxLen < splits[i].length()) {
                    largeIndex = i;
                    maxLen = splits[i].length();
                }
            }
        }
        if (largeIndex != -1)
            System.out.println(splits[largeIndex]);
        else
            System.out.println("No white spaces");
    
    }
    

    【讨论】:

    • “授人以鱼,养其一日。授人以渔,养其一生。”
    • 请突出显示您的更改并详细解释它们。特别是对于那些初学者级别的问题,解释的帮助不仅仅是代码。
    【解决方案3】:

    它不会包含空格,因为您正在用空格分割字符串。

    String word[] = s.split(rts);

    这已经从你的字符串中删除了空格,现在你正在迭代没有空格的字符串。

    我认为他的意思是这样的。

    private static void stringFunc() {
    
        String s = new String("Crying to be heard");
        String rts = " ";
        String word[] = s.split(rts);
        if(s.contains(rts)) {
            System.out.println("There are spaces");
            for (int i = 0; i < word.length; i++) {
                if (word[i].length() >= rts.length()) {
                    rts = word[i];
                }
            }
            System.out.println(rts);
        }
    
    }
    

    【讨论】:

    • 我认为他指的是原始的未拆分字符串。拆分部分仅用于查找不包含空格的最长单词。
    • 他说“如果有空格就打印”。
    • 感谢 Mujahid,它成功了。上面的 if 语句,正是我所缺少的。
    【解决方案4】:

    试试这个衬里:

    String longest = Arrays.stream(word).sorted(Comparator.comparing(a -&gt; a.length())).reduce((a, b) -&gt; b).get();

    基本上,它会流式传输您的数组,然后根据每个元素(单词)的长度对其进行排序,然后选择长度最长的单词的最后一个单词。

    【讨论】:

    • 最后一个词并不总是最长的。
    • 我运行了这个。我得到“哭泣”,这是你句子中最长的词。你在尝试不同的句子吗?
    • 不,一点也不。
    • @JohnMason,在你的情况下打印的是什么?就我而言,它正在打印“哭泣”。
    • 正是它的作用。
    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2014-05-29
    • 2017-07-26
    • 1970-01-01
    • 2014-05-02
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多