【发布时间】:2016-01-05 09:53:33
【问题描述】:
我需要一种方法来修正在 String 中找到的缩写词的大小写。假设所有缩写的间距正确。
例如,
"Robert a.k.a. Bob A.k.A. dr. Bobby"
变成:
"Robert A.K.A. Bob A.K.A. Dr. Bobby"
将提前知道正确大写的缩写,存储在某种Collection 中。
我在想这样的算法:
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.)
- 如果单词以标点符号(“a.k.a.”)开头或结尾
我觉得这可以通过正则表达式来解决,迭代匹配并替换正确的缩写。但如果不是,我应该如何解决这个问题?
【问题讨论】:
-
是否要将每个单词的首字母大写?单词由字符串序列定义,后跟句点或空格。这是正确的吗?
-
我目前有一个我想要更正的所有缩写的列表。所以如果有
"o.o."这样无意义的缩写,就不会更正了。 -
哦,我明白了 - 让我看看我的答案是否涵盖了这个无意义的缩写
-
你怎么能真正知道如果一个缩写是“无意义的”?将所有可能的缩写列入白名单感觉过于复杂......