【问题标题】:split a string by space and if word characters less than 2 make it single word otherwise two words用空格分割字符串,如果单词字符小于 2,则使其成为单个单词,否则为两个单词
【发布时间】:2021-09-09 08:24:43
【问题描述】:

当我需要用空格分割字符串时,我有一个要求,如果单词字符长度小于两个字符而不是使其成为单个单词,否则使其成为两个单词。

为了更清晰的想法,这就是我想要的:

Input  : This is car
Output : {"this is", "car"}

Input  : a abcd xyz efg
Output : {"a abcd", "xyz", "efg"}

Input  : a abcd xyz efg ha
Output : {"a abcd", "xyz", "efg ha"}

我尝试了以下代码,但它不起作用

String searchValue = "a abcd xyz efg ha"
String[] separated = searchValue.split(" ");
private List<String> getFinalSearchList(String[] separated) {
    String resultString = "";
    List<String> finalSearch = new ArrayList<String>();
    for (String searchString : separated) {
        if (searchString.length() > SEARCH_CHARACTOR_LENGTH) {
            resultString = "";
            resultString = resultString + searchString;
            finalSearch.add(resultString);
        } else if (searchString.length() <= SEARCH_CHARACTOR_LENGTH) {
            finalSearch.remove(new String(resultString));
            resultString = resultString + " " + searchString;
            finalSearch.add(resultString);
        }
    }
    return finalSearch;
}

【问题讨论】:

    标签: java arrays list arraylist


    【解决方案1】:

    不是更简洁的代码,但可以按要求工作。

    private  List<String> getFinalSearchList(String[] separated) {
        List<String> finalSearch = new ArrayList<>();
        for (int index = 0; index < separated.length; index++) {
            if (index == 0) {
                finalSearch.add(separated[index]);
                continue;
            }
            String previousString = finalSearch.get(finalSearch.size() - 1);
            String searchString = separated[index];
            if (searchString.length() <= SEARCH_CHARACTOR_LENGTH || previousString.length() <= SEARCH_CHARACTOR_LENGTH) {
                finalSearch.remove(finalSearch.size() - 1);
                finalSearch.add(String.join(" ", previousString, searchString));
            } else {
                finalSearch.add(searchString);
            }
        }
        return finalSearch;
    }
    

    【讨论】:

    • 它正在为我返回[a abcd, xyz, efg ha]。你能重新检查一下吗?
    • 如果您对解决方案感到满意,请接受答案。谢谢你:)
    • 别人Q的。我已经为你的时间投票了。
    • 哦,是的,弄糊涂了。感谢您的支持:)
    【解决方案2】:

    在下面的实现中,我修改了您的代码以显式检查数组中的前 2 个字符串(如果有)。
    这是所需结果的工作代码:

        static int SEARCH_CHARACTER_LENGTH = 2;
        static String searchValue = "a abcd xyz efg ha";
        static String[] separated = searchValue.split(" ");
        private List<String> getFinalSearchList(String[] separated)
        {
            int i = 0;
            String searchString = "";
            String resultString = separated[0];
            List<String> finalSearch = new ArrayList<String>();
            if (separated[0].length() < SEARCH_CHARACTER_LENGTH && 1<separated.length)
            {
                resultString = separated[0]+ " " +separated[1];
                finalSearch.add(resultString); i = 2;
            }
            else
            {
                finalSearch.add(separated[0]); i = 1;
            }
            for ( ; i<separated.length; i++)
            {
                searchString = separated[i];
                if (searchString.length() > SEARCH_CHARACTER_LENGTH)
                {
                    finalSearch.add(resultString = searchString);
                }
                else if (searchString.length() <= SEARCH_CHARACTER_LENGTH)
                {
                    finalSearch.remove(new String(resultString));
                    resultString += " " + searchString;
                    finalSearch.add(resultString);
                }
            }
            searchString = separated[separated.length-1];
            return finalSearch;
        }
    

    输入:“这是汽车”
    输出:[这是,汽车]
    输入:“a abcd xyz efg ha”
    输出:[a abcd, xyz, efg ha]
    输入:“a abcd xyz efg a xyz pp ggg ha p p y”
    输出:[a abcd, efg a, xyz, xyz pp, ggg ha p p y]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多