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

Java中查找指定长度单词且忽略标点符号的实现方法

实现长单词过滤(忽略标点)的方案

问题根因

你当前的逻辑直接统计带标点的原始单词长度,导致Stones!这类末尾带标点的单词长度被误算为7,匹配阈值后被错误返回。

实现步骤

  • 先编写单词清洗逻辑,借助Character.isLetter()方法(你提供的参考代码中已演示该API用法)遍历单词每个字符,仅保留字母内容,得到无标点的纯字母单词
  • 再判断清洗后的纯字母单词长度是否大于等于指定阈值,符合要求的才加入返回结果

完整示例代码

import java.util.ArrayList;
import java.util.List;

public class WordFilter {
    // 清洗单词,仅保留字母字符
    private static String cleanWord(String rawWord) {
        StringBuilder sb = new StringBuilder();
        for (char c : rawWord.toCharArray()) {
            if (Character.isLetter(c)) {
                sb.append(c);
            }
        }
        return sb.toString();
    }

    // 查找长度大于等于minLength的单词,自动忽略标点
    public static List<String> bigLongWords(String inputStr, int minLength) {
        List<String> result = new ArrayList<>();
        // 按空格分割得到原始单词数组
        String[] rawWords = inputStr.split(" ");
        for (String rawWord : rawWords) {
            String cleanWord = cleanWord(rawWord);
            // 跳过清洗后为空的无效内容
            if (cleanWord.isEmpty()) {
                continue;
            }
            if (cleanWord.length() >= minLength) {
                result.add(cleanWord);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        // 测试用例
        String testInput = "The Rolling Stones!";
        List<String> result = bigLongWords(testInput, 7);
        // 输出结果:[Rolling],符合预期
        System.out.println(result);
    }
}

效果说明

示例中Stones!清洗后得到纯字母内容Stones,长度为6,小于设定的阈值7,不会被纳入返回结果,完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:27:00