You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发:如何将EditText输入字符串按2-6词连续分组?

解决EditText输入字符串的多连续单词分组问题

嘿,作为Java新手碰到这个需求完全没问题,我来帮你一步步实现这个功能!核心思路是先把输入字符串拆成单词数组,然后通过通用方法生成不同长度的连续单词组合,下面是具体步骤和代码:

步骤1:获取输入并拆分单词数组

首先从EditText中拿到用户输入的字符串,然后把它拆分成单个单词的数组。这里用\\s+来分割,可以处理多个空格、制表符等空白情况:

// 获取EditText输入
EditText editText = findViewById(R.id.your_edit_text_id);
String inputStr = editText.getText().toString().trim();

// 拆分单词数组,处理多个空白字符
String[] words = inputStr.split("\\s+");

步骤2:编写通用分组方法

写一个通用方法,传入单词数组和想要的分组长度(2-6),返回对应的连续单词分组列表。这个方法会自动处理边界情况(比如单词数量不足分组长度时返回空列表):

/**
 * 生成指定长度的连续单词分组
 * @param words 拆分后的单词数组
 * @param groupLength 每组的单词数量(2-6)
 * @return 分组后的字符串列表
 */
private List<String> generateWordGroups(String[] words, int groupLength) {
    List<String> groups = new ArrayList<>();
    // 如果单词数量小于分组长度,直接返回空列表
    if (words.length < groupLength) {
        return groups;
    }
    // 循环生成每组:从第i个单词开始,取groupLength个连续单词
    for (int i = 0; i <= words.length - groupLength; i++) {
        StringBuilder sb = new StringBuilder();
        // 拼接当前组的单词
        for (int j = i; j < i + groupLength; j++) {
            if (j > i) {
                sb.append(" ");
            }
            sb.append(words[j]);
        }
        // 把拼接好的组加入列表,带上你需要的括号格式
        groups.add("(" + sb.toString() + ")");
    }
    return groups;
}

步骤3:调用方法生成2-6词的分组

现在你只需要调用上面的方法,传入不同的分组长度,就能得到想要的结果了:

// 生成2词分组
List<String> twoWordGroups = generateWordGroups(words, 2);
// 生成3词分组
List<String> threeWordGroups = generateWordGroups(words, 3);
// 生成4词分组
List<String> fourWordGroups = generateWordGroups(words, 4);
// 生成5词分组
List<String> fiveWordGroups = generateWordGroups(words, 5);
// 生成6词分组
List<String> sixWordGroups = generateWordGroups(words, 6);

// 打印测试(你可以根据需求改成显示在TextView或者其他地方)
System.out.println("按2词分组:" + String.join("", twoWordGroups));
System.out.println("按3词分组:" + String.join("", threeWordGroups));

测试示例

针对你给出的输入字符串 "the alarm clock in the table is noisy",运行后会得到:

按2词分组:(the alarm)(alarm clock)(clock in)(in the)(the table)(table is)(is noisy)
按3词分组:(the alarm clock)(alarm clock in)(clock in the)(in the table)(the table is)(table is noisy)
按4词分组:(the alarm clock in)(alarm clock in the)(clock in the table)(in the table is)(the table is noisy)
...以此类推5词和6词分组

小提示

  • 记得处理输入为空的情况:比如如果用户没输入内容,words数组的长度会是0,这时候所有分组都是空列表。
  • 如果需要把分组结果展示给用户,可以用String.join(" ", groups)或者循环遍历列表逐个显示。

内容的提问来源于stack exchange,提问作者blackblink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:50:04