我想在字符串中的每个字母之前插入一个%
字符,但使用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