Существует что-то нечисто здесь; либо text
не является String
, либо вы не используете .replace()
, а что-то еще (.replaceAll()
?), или Android .replace()
является ошибкой.
И, честно говоря, я сомневаюсь, что Android-разработчики имели бы такой промах.
The Javadoc for String#replace()
говорит:
Заменяет каждую подстроку этой строки, которая соответствует буквальным целевой последовательности с указанной буквального последовательности замены. [курсив мой]
В отличие от своих двойников методов (.replaceFirst()
и .replaceAll()
), которые действительно используют регулярные выражения, .replace()
нет (и тот факт, что внутренне он действительно использует Pattern
, по крайней мере, в JDK Oracle, [*], является не проблема).
Поэтому, если вы действительно используете .replace()
и получите результат, о котором говорите, это ошибка в Android. Если это так, попробуйте альтернативу, например, так (непроверенные):
public static String realStringReplace(final String victim, final String target,
final String replacement)
{
final int skip = target.length();
final StringBuilder sb = new StringBuilder(victim.length());
String tmp = victim;
int index;
while (!tmp.isEmpty()) {
index = tmp.indexOf(target);
if (index == -1)
break;
sb.append(tmp.subString(0, index)).append(replacement);
tmp = tmp.subString(index + skip);
}
return sb.append(tmp).toString();
}
Попробуйте ЭСКАТО e a. символ \. Я думаю. – Lingviston
«каждое слово без последней буквы слова в каждой строке» <- non capisco niente ... Можете ли вы привести пример? – fge
@Lingviston trap ... '.replace()' не использует регулярные выражения, несмотря на свои «братья и сестры» '.replaceFirst()' и '.replaceAll()', которые делают – fge