我想在字符串中的每個字母之前插入一個%
字符,但使用StringBuilder使其更快。在字符串中的evrey字母之前和之後插入一個字符
例如,
一個字符串是否是 'AA'
then it would be '%A%A%'
如果是 'XYZ'
then it would be '%X%Y%Z%'
我想在字符串中的每個字母之前插入一個%
字符,但使用StringBuilder使其更快。在字符串中的evrey字母之前和之後插入一個字符
例如,
一個字符串是否是 'AA'
then it would be '%A%A%'
如果是 'XYZ'
then it would be '%X%Y%Z%'
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 test = "ABC";
StringBuilder builder = new StringBuilder("");
builder.append("%");
for (char achar : test.toCharArray()) {
builder.append(achar);
builder.append("%");
}
System.out.println(builder.toString());
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();
}
StringBuilder sb = new StringBuilder("AAAAAAA");
for(int i = sb.length(); i >= 0; i--)
{
sb.insert(i, '%');
}
忽略這樣一個事實,即你根本不想使用StringBuilder來實現這一點,這是使用StringBuilder的最差表現方法。您必須爲插入的每個百分比移動數據。看到其他答案,正在使用'append()' – 2012-02-20 06:41:48
你可能會看到這個。
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%
我@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 $
看起來你也在字符串的開頭插入了一個%字符。 – jgritty 2012-02-20 06:24:26
你也是我想要的 – Hunt 2012-02-20 06:25:02