考虑以下字符串:Java的String修复收缩
"...Cant you, because I cant, I just CANT."
一个如何去增加在cant
所有实例的'
,同时仍保留资本?
"...Can't you, because I can't, I just CAN'T."
这是我到目前为止。它的工作原理,但似乎不必要
慢
复杂:
public static String fix(String line) {
if (line == null || line.isEmpty()) {
return line;
}
StringBuilder builder = new StringBuilder();
String[] split = line.split(" ");
for (String word : split) {
if (word.replaceAll("\\p{P}", "").equalsIgnoreCase("cant")) { // remove punctuation
while (word.matches("^\\p{P}.*$")) { // starts with punctuation
builder.append(word.charAt(0));
word = word.substring(1);
}
builder.append(word.substring(0, 3)); // can
builder.append("'"); // '
builder.append(word.substring(3)); // t
} else {
builder.append(word);
}
builder.append(" ");
}
return builder.toString().trim();
}
是什么让你觉得这个解决方案很慢?你有没有试过计时?我运行它似乎足够快。 – azurefrog
我只是觉得这么简单的任务太多了。从它的外观来看,正则表达式是解决这个问题的最佳解决方案。编辑:在原始帖子中将“缓慢”改为“复杂”:) –