我需要用一个双引号替换所有连续的单引号:
// ''Hello World'' -> "Hello World"
// '''It's me.'''' -> "It's me."
// ''''Oh'' ''No''' -> "Oh" "No"
// ''This'''Is''Fine'' -> "This"Is"Fine"
我觉得这可以通过正则表达式解决,但我不知道从哪里开始。
这是我目前的解决方案:
private fix(String line) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < line.length(); ++i) {
builder.append("'");
}
while (builder.length() > 1) {
line = line.replace(builder.toString(), "\"");
builder.deleteCharAt(0);
}
return line;
}
答案 0 :(得分:4)
有不同的所谓量词来定义一个角色可以/必须在给定的时间内重复。
可能最常见的是*(零次或多次出现)和+(一次或多次出现)。在你的情况下对你有帮助的量词是{2,},这意味着&#34;两个或更多的出现&#34;。这是更通用的{ min occurences , max occurences }量词的特化。
所以你可以这样做:
line.replaceAll("'{2,}", "\"");
在JavaDocs中定义的http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#greedy