我需要一种方法来修复 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/