Почему этот код Java String.replaceAll () не работает? - PullRequest
2 голосов
/ 05 ноября 2010

Раньше я без проблем использовал string.replaceAll () в Java, но я не уверен в этом.Я думал, что это просто сработает, так как нет символов "/" или "$".Вот что я пытаюсь сделать:

String testString = "__constant float* windowArray";
String result = testString.replaceAll("__constant float* windowArray", "__global float* windowArray");

Результат переменной выглядит так же, как testString.Я не понимаю, почему нет изменений, пожалуйста, помогите.

Ответы [ 4 ]

7 голосов
/ 05 ноября 2010

Первый аргумент, переданный replaceAll, по-прежнему обрабатывается как регулярное выражение.Символ * - это специальный символ, означающий, примерно, предыдущую вещь в строке (здесь: t), может быть там 0 или более раз.То, что вы хотите сделать, это экранировать * для регулярного выражения.Ваш первый аргумент должен выглядеть примерно так:

"__constant float\\* windowArray"

Второй аргумент, по крайней мере для ваших целей, по-прежнему просто обычная строка, поэтому вам не нужно экранировать * там.

String result = testString.replaceAll("__constant float\\* windowArray", "__global float* windowArray");
2 голосов
/ 06 ноября 2010

* является квантификатором регулярных выражений.Метод replaceAll использует регулярное выражение.Чтобы избежать использования регулярных выражений, попробуйте вместо этого использовать метод replace .

Пример:

String testString = "__constant float* windowArray";
String replaceString = "__global float* windowArray";
String result = testString.replace(testString.subSequence(0, testString.length()-1), 
            replaceString.subSequence(0, replaceString.length()-1));
2 голосов
/ 05 ноября 2010

Вам нужно будет экранировать *, так как это специальный символ в регулярных выражениях.

Итак testString.replaceAll("__constant float\\* windowArray", "__global float\\* windowArray");

0 голосов
/ 05 ноября 2010
String result = testString.replaceAll("__constant float windowArray\\\\*", "__global float\\* windowArray");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...