Функция замены строки - PullRequest
       16

Функция замены строки

1 голос
/ 18 ноября 2008

У меня есть следующая строка

String str = "replace :) :) with some other string";

И я хочу заменить первое вхождение :) другой строкой

И я использовал str.replaceFirst(":)","hi");

дает следующее исключение

"Непревзойденное закрытие") '"

Я пытался использовать функцию replace, но она заменила все вхождения :).

Ответы [ 3 ]

10 голосов
/ 18 ноября 2008

Метод replaceFirst принимает регулярное выражение в качестве первого параметра. Поскольку ) - это специальный символ в регулярных выражениях, вы должны заключить его в кавычки. Попробуйте:

str.replaceFirst(":\\)", "hi");

Двойная обратная косая черта необходима, потому что строка в двойных кавычках также использует обратную косую черту в качестве символа кавычки.

5 голосов
/ 18 ноября 2008

Первый аргумент для replaceFirst () - это регулярное выражение, а не просто последовательность символов. В регулярных выражениях паратезы имеют особое значение. Вы должны избежать парантеза так:

str = str.replaceFirst(":\\)", "hi");
1 голос
/ 18 ноября 2008

Apache Jakarta Commons часто являются решением для этого класса проблем. В этом случае я бы посмотрел на commons-lang , особенно StringUtils.replaceOnce () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...