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
相关产品推荐
相关产品推荐

