2015-09-30 5 views
1

мне нужно, чтобы заменить все последовательные одиночные кавычки с одной двойной кавычки:Заменить последовательные символы в строке

// ''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; 
} 

ответ

3

Существуют различные так называемые кванторы, чтобы определить, что персонаж может/должен быть повторен определенное количество времени.

Возможно, наиболее известными являются * (ноль или более случаев) и + (одно или несколько случаев). Квантователь, который поможет вам в вашем случае, - {2,}, что означает «два или более случаев». Это специализация более общих {минимальных вхождений, max вхождения} quantifier.

Таким образом, вы можете сделать это так:

line.replaceAll("'{2,}", "\""); 

В разделе JavaDocs очерченной в http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#greedy

Смежные вопросы