我希望在字符串中的每个字母之前插入一个%
字符,但是使用StringBuilder使其快速。
例如,
如果字符串是' AA'
then it would be '%A%A%'
如果是' XYZ'
then it would be '%X%Y%Z%'
答案 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 $