Невозможно заменить строку - PullRequest
0 голосов
/ 03 февраля 2010

Это мой метод замены в Java, но его невозможно заменить следующим.

Он заменяет только один \

Пожалуйста, помогите. Если у какого-либо тела есть другой метод замены?

Я пробовал стандартный API Java, но он не работает, пожалуйста, попробуйте следовать Senario -> System.out.println (replace («проблема% s», «%», «\%»));

public static String replace(String str, String sub, String rep) {
        int s, p, q;
        int slen = sub.length();
        StringBuffer sb = new StringBuffer();

        s = 0;
        p = str.indexOf(sub);
        q = p + slen;
        while (p != -1) {
            sb.append(str.substring(s, p));
            sb.append(rep);
            s = q;
            p = str.indexOf(sub, s);
            if (p != -1) {
                q = p + slen;
            }
        }
        sb.append(str.substring(s));
        return sb.toString();
    }

Ответы [ 4 ]

2 голосов
/ 03 февраля 2010

Вы можете использовать метод replaceAll. Вам просто нужно быть осторожным, избегая \ и% (хотя я не до конца понимаю, зачем вам четыре)!

String myString = "this%s is the problem";
myString = myString.replaceAll("%","\\\\%);
1 голос
/ 03 февраля 2010

Выход из escape-знаков в Java немного утомителен, но это должно делать то, что вы хотите (если хотите \\%):

System.out.println("this%s is the problem".replace("%" , "\\\\%"));

Если вы хотите \% это так:

System.out.println("this%s is the problem".replace("%" , "\\%"));

Также обратите внимание, что это не будет работать правильно с replaceAll, который принимает регулярные выражения, отличные от replace.

0 голосов
/ 03 февраля 2010

Почему бы вам не использовать org.apache.commons.lang.StringUtils # replace (String, String, String)

0 голосов
/ 03 февраля 2010

Существует метод replaceAll ()

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