2012-02-20 257 views
1

我想在字符串中的每个字母之前插入一个%字符,但使用StringBuilder使其更快。在字符串中的evrey字母之前和之后插入一个字符

例如,

一个字符串是否是 'AA'

then it would be '%A%A%' 

如果是 'XYZ'

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

看起来你也在字符串的开头插入了一个%字符。 – jgritty 2012-02-20 06:24:26

+0

你也是我想要的 – Hunt 2012-02-20 06:25:02

回答

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()继续在整个字符串上运行这个表达式,并用一个百分号替换每个字符,然后生成一个新的字符串,然后返回给您。

+0

这个答案是一个最好的答案,非常好。 @Brian Roach请详细解释您的答案,如“(。)”或“$ 1%”。 – MJM 2012-02-20 06:45:39

+0

@MJM - 是的,很好的电话;完成。 – 2012-02-20 06:50:44

+0

谢谢,你的讨论也很好。 – MJM 2012-02-20 06:54:38

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()); 
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(); 
} 
0
StringBuilder sb = new StringBuilder("AAAAAAA"); 

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

忽略这样一个事实,即你根本不想使用StringBuilder来实现这一点,这是使用StringBuilder的最差表现方法。您必须为插入的每个百分比移动数据。看到其他答案,正在使用'append()' – 2012-02-20 06:41:48

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% 
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 $

相关问题