在字符串中的每个字母前后插入一个字符

时间:2012-02-20 06:22:26

标签: java string stringbuilder

我希望在字符串中的每个字母之前插入一个%字符,但是使用StringBuilder使其快速。

例如,

如果字符串是' AA'

then it would be '%A%A%'

如果是' XYZ'

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

6 个答案:

答案 0 :(得分:3)

String foo = "VWXYZ";
foo = "%" + foo.replaceAll("(.)","$1%");
System.out.println(foo);

输出:

  

%V%W%X%Y%Z%

您不需要StringBuilder。编译器将在正则表达式之前使用一个来处理这个简单的连接。

根据以下评论进行修改:

replaceAll()使用Regular Expression (regex)

正则表达式(.)说“匹配任何字符,并给我一个引用”.是任何字符的通配符,括号创建反向引用。第二个参数中的$1表示“从匹配中使用反向引用#1”。

replaceAll()继续在整个字符串上运行这个表达式,用自己替换每个字符后跟一个百分号,构建一个新的String然后返回给你。

答案 1 :(得分:0)

尝试这样的事情:

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

答案 2 :(得分:0)

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();
}

答案 3 :(得分:0)

StringBuilder sb = new StringBuilder("AAAAAAA");

for(int i = sb.length(); i >= 0; i--)
{
    sb.insert(i, '%');
}

答案 4 :(得分:0)

你可能会看到这一点。

    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%

答案 5 :(得分:0)

我同意@Brian Roach在之前和之后添加字符,但如果你想添加任何特定字符,那么就这样做

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());
  

输出: - #hello $#good $#old $ #world $