Как удалить в строке пробелы исключая из проверки подстроки
Строка имеет вид: "IF ( fd1="","Not found",fd1 )" Возможно ли с помощью регулярного выражения (или другим способом) удалить все пробелы в строке, но исключить пробелы в подстроке "Not found" ? Подстрок может быть несколько с различным текстом. Я пробовал использовать вариант:
str.replaceAll("\\s", "");
Но в этом случае в подстроке также удаляются пробелы.
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Используйте шаблон с негативными просмотрами назад и вперед (?<!Not)\\s(?!found)
public class Main {
public static void main(String[] args) {
String text = "IF ( fd1=\"\",\"Not found\",fd1 )";
text = text.replaceAll("(?<!Not)\\s(?!found)", "");
System.out.println(text);
}
}
IF(fd1="","Not found",fd1)
Более сложная версия для обработки случаев вида IF ( fd1="","Not around",fd1 ):
public class Main {
public static void main(String[] args) {
String[] texts = {"IF ( fd1=\"\",\"Not found\",fd1 )",
"IF ( fd1=\"\",\"Not around\",fd1 )",
"IF ( fd1=\"\",\"Yes found\",fd1 )",
"IF ( fd1=\"\",\"Blood hound\",fd1 )"};
for (String t : texts)
System.out.println(t.replaceAll("(?<!Not)\\s+(?!found)|(?<!Not)\\s+(?=found)|(?<=Not)\\s+(?!found)", ""));
}
}
IF(fd1="","Not found",fd1)
IF(fd1="","Notaround",fd1)
IF(fd1="","Yesfound",fd1)
IF(fd1="","Bloodhound",fd1)