вставить символ до и после каждой буквы в строке - PullRequest
1 голос
/ 20 февраля 2012

Я хочу вставить символ % перед каждой буквой в строке, но с помощью StringBuilder, чтобы сделать это быстро.

например,

, если строка 'AA'

then it would be '%A%A%'

если это XYZ

then it would be '%X%Y%Z%'

Ответы [ 6 ]

3 голосов
/ 20 февраля 2012
String foo = "VWXYZ";
foo = "%" + foo.replaceAll("(.)","$1%");
System.out.println(foo);

Вывод:

% V% W% X% Y% Z%

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

Изменить в ответ на комментарий ниже:

replaceAll() использует Регулярное выражение (регулярное выражение) .

Регулярное выражение (.) говорит: "соответствует любому символу и дайте мне ссылку на него" . - это подстановочный знак для любого символа, в скобках указывается обратная ссылка.$1 во втором аргументе говорит: «Использовать обратную ссылку # 1 из совпадения».

replaceAll() продолжает выполнять это выражение по всей строке, заменяя каждый символ самим собой, после которого следует знак процента, создавая новую строку, которую он затем возвращает вам.

0 голосов
/ 11 ноября 2017

Я согласен с @ Брайаном Роучем , чтобы добавить символ до и после, но если вы хотите добавить какой-либо конкретный символ, сделайте вот так

String source = "hello good old world";
StringBuffer res = new StringBuffer();
String[] strArr = tagList.split(" ");

for (String str : strArr) {
     char[] stringArray = str.trim().toCharArray();
     stringArray[0] = stringArray[0];
     str = new String(stringArray);
     //here you need to specify your first and last character which you want to set 
     res.append("#"+ str + "$").append(" ");
 }

 System.out.println("Result: " + res.toString().trim());

Вывод: -# привет $ # добрый $ # старый $ # мир $

0 голосов
/ 20 февраля 2012

Вы можете увидеть это.

    String s="AAAA";
    StringBuilder builder = new StringBuilder();
    char[] ch=s.toCharArray();
    for(int i=0;i<ch.length;i++)
    {
        builder.append("%"+ch[i]);
    }
    builder.append("%");
    System.out.println(builder.toString());

выход

    %A%A%A%A%
0 голосов
/ 20 февраля 2012
StringBuilder sb = new StringBuilder("AAAAAAA");

for(int i = sb.length(); i >= 0; i--)
{
    sb.insert(i, '%');
}
0 голосов
/ 20 февраля 2012
public static String escape(String s) {
    StringBuilder buf = new StringBuilder();
    boolean wasLetter = false;
    for (char c: s.toCharArray()) {
        boolean isLetter = Character.isLetter(c);
        if (isLetter && !wasLetter) {
            buf.append('%');
        }
        buf.append(c);
        if (isLetter) {
            buf.append('%');
        }
        wasLetter = isLetter;
    }
    return buf.toString();
}
0 голосов
/ 20 февраля 2012

Попробуйте что-то вроде этого:

    String test = "ABC";
    StringBuilder builder = new StringBuilder("");
    builder.append("%");
    for (char achar : test.toCharArray()) {
        builder.append(achar);
        builder.append("%");
    }
    System.out.println(builder.toString());
...