
本文介绍如何使用 java 的 `replaceall()` 方法精准提取单词的单数形式(去除词尾 s),并将其与原始复数形式并排输出为整齐的双列表格,避免误删内部字母 s。
在处理英文单词列表时,若需将复数形式(如 "Ants"、"Bears")分离为“单数原形”和“复数形式”两列,关键在于仅移除词尾的 s,而非所有 s 字符(例如 "Cats" → "Cat",而非 "Cat" 错误变成 "Cat" 以外的 "Ca")。使用 String.replace("s", " ") 或 replace("s", "") 是不安全的——它会替换字符串中所有 s(包括中间的,如 "FalconS" 中的大写 S 或 "Class" 中的 ss),导致结果错误。
正确做法是使用正则表达式 replaceAll("s$", ""):
- s 匹配小写 s;
- $ 是锚点,表示“行尾”,确保只匹配结尾的 s;
- 若需兼容大小写(如 "AntS"),可改用 "(?i)s$"(忽略大小写)。
以下是完整、健壮的实现示例:
String[] words = {"Ants", "Bears", "Cats", "Dogs", "Falcons"};
System.out.println("Without plurals\tWith plurals");
for (String word : words) {
String singular = word.replaceAll("(?i)s$", ""); // 安全移除词尾 s/S
System.out.printf("%-15s\t%s%n", singular, word);
}✅ 输出效果(对齐清晰,支持大小写):
bee餐饮点餐外卖小程序是针对餐饮行业推出的一套完整的餐饮解决方案,实现了用户在线点餐下单、外卖、叫号排队、支付、配送等功能,完美的使餐饮行业更高效便捷!功能演示:1、桌号管理登录后台,左侧菜单 “桌号管理”,添加并管理你的桌号信息,添加以后在列表你将可以看到 ID 和 密钥,这两个数据用来生成桌子的二维码2、生成桌子二维码例如上面的ID为 308,密钥为 d3PiIY,那么现在去左侧菜单微信设置
Without plurals With plurals Ant Ants Bear Bears Cat Cats Dog Dogs Falcon Falcons
⚠️ 注意事项:
- replaceAll() 返回新字符串,原字符串不可变;
- 若输入含不规则复数(如 "mice" → "mouse"),此方法不适用,需额外字典映射;
- 实际项目中建议先 trim() 并校验非空,防止空指针或空白干扰;
- 如需批量处理用户输入,推荐封装为工具方法:
public static String toSingular(String plural) { return plural == null ? "" : plural.replaceAll("(?i)s$", ""); }
通过精准的正则控制,即可高效、可靠地实现单复数双列分离,兼顾可读性与鲁棒性。









