2012-02-20 472 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 $

相關問題