#java
#java
Вопрос:
Нам нужно указать примерно так:I»ЭТО ТЕСТ [1]» для данных: I «ЭТО ТЕСТ[1]» — для вставки в красное смещение.
Но вышеуказанная вещь должна быть выполнена, только если у нас есть » в заданной строке, поэтому я ищу, как идентифицировать » в заданной строке, пытался с помощью regEx, но безуспешно. Не могли бы вы, пожалуйста, предложить здесь, как проверить, есть ли в строке «, чтобы, если совпадение найдено, я заменил все («»» , «\»»);
Спасибо!!!
Ответ №1:
Чтобы проверить, содержит ли строка строку «, вы должны сначала сопоставить символ буквально, добавив к вашему регулярному выражению, а затем сопоставить «символ, добавив «.
Конечным регулярным выражением является \», и это проверяется на соответствие предоставленной вами строке на https://regex101.com /
Быстрый тест:
String regex = "\"";
Pattern pattern = Pattern.compile(regex);
String toTest = "hi there ". Do I match?";
boolean found = pattern.matcher(toTest).find();
System.out.println("Boolean value for whether pattern matches toTest: " found);
Вывод: «Логическое значение для определения того, соответствует ли шаблон toTest: true»
После того, как найдено значение true, просто запустите свою команду replaceAll следующим образом:
String#replaceAll(regex, "new value");
Примечание: » это просто «. » будет соответствовать «. \»будет соответствовать «. Каждый раз, когда вы хотите сопоставить дополнительный , просто добавьте \ к своему регулярному выражению
— В качестве альтернативы, если вы хотите сопоставить дополнительный «add » с вашим регулярным выражением
Комментарии:
1. Спасибо, Натан! после того, как совпадение истинно, я задаю как:
result=pattern.matcher(toTest).replaceAll(regex); System.out.println("result::::" result);
Но не повезло, если у меня есть входная строка, подобная этой: I «TEST STR [1] затем я получаю вывод как: I «TEST STR[1]»2. Не беспокойтесь «, я «ТЕСТИРУЮ STR[1] «».replaceAll(regex, «»); удалит » из строки — Если вы хотите заменить » на «»» в строке, просто замените этим пустое «» 🙂
3.
class Test { public static void main(String[] args) { String regex = "\""; String result=""; Pattern pattern = Pattern.compile(regex); String toTest = "I"TEST STR[1]""; boolean found = pattern.matcher(toTest).find(); System.out.println("Boolean value for whether pattern matches toTest: " found); if(found){ System.out.println("TRUE"); System.out.println("result::::" "I"TEST STR[1]"".replaceAll(regex, "\"")); } } }
Привет, @nathan, я пытаюсь использовать описанный выше способ замены, но это выдает результат как I»TEST STR[1]», но мне нужно получить как: I «TEST STR[1]» .4. Натан, пожалуйста, ты можешь попробовать запустить этот фрагмент кода 🙂
5. Вывод для следующего кода: Найдено «внутри I»TEST STR[1]» string, new val = I»TEST STR[1]» Code = pastebin.com/pJYEenyu Если это не то, что вы хотите, тогда вам нужно быть немного более конкретным в том, какой вывод вы хотите для какого ввода