Java 字符串修复缩写中的大写

标签 java regex

我需要一种方法来修复 String 中缩写词的大小写。假设所有缩写的间距正确。

例如,

"Robert a.k.a. Bob A.k.A. dr. Bobby"

变成:

"Robert A.K.A. Bob A.K.A. Dr. Bobby"

正确大写的缩写将提前知道,并存储在某种集合中。

我正在考虑这样的算法:

private String fix(String s) {
    StringBuilder builder = new StringBuilder();
    for (String word : s.split(" ")) {
        if (collection.contains(word.toUpperCase()) {
            // word = correct abbreviation here
        }
        builder.append(word);
        builder.append(" ");
    }
    return builder.toString().trim();
}

但据我所知,这种方法存在一些问题:

  • 如果缩写有小写字母 (Dr.)
  • 如果单词以标点符号(“又名”)开头或结尾

我有一种感觉,这可以通过正则表达式来解决,迭代匹配并替换正确的缩写。但如果不是,我该如何解决这个问题?

最佳答案

我建议您使用实用程序库,而不是使用正则表达式或滚动自己的实现。 WordUtils Apache Commons Lang 非常适合这项工作:

String input = "Robert a.k.a. Bob A.k.A. dr. Bobby";
String capitalized = WordUtils.capitalize(input, '.', ' ');
System.out.println(capitalized);

打印出来

Robert A.K.A. Bob A.K.A. Dr. Bobby

关于Java 字符串修复缩写中的大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33004550/

相关文章:

jquery - 仅在 inputmask jquery 中从特定号码开始验证电话号码

regex - 正则表达式中的负回顾

regex - 复杂的正则表达式(换行符、多个变量)

regex - JMeter 代理排除模式仍在记录中

java - 在多台机器上跨 tomcat 共享 war

java - CORBA ORB 运行时定义本地 IP 接口(interface)使用

java - 关于框架(概念)

javascript - 匹配前面没有左括号的两个引号

java - JConsole 可以嵌入到 Java 应用程序中吗?

java - 如何将微调器包含到警报对话框或将其显示为警报对话框或其他替代方案