boolean result = matcher.find(); if (result) { StringBuffer sb = new StringBuffer(); do { String group = matcher.group(); matcher.appendReplacement(sb, +group+); result = matcher.find(); } while (result); matcher.appendTail(sb); return sb.toString(); }else{ return sourceString; } }
然后在变换后的最前和最后加'
我也来帖一个,呵呵public class StringTest {
public static void main(String[] args) {
String sStr = "1,2,3,4,5,6";
System.out.println(sStr);
String oStr = converseString(sStr);
System.out.println(oStr);
}
public static String converseString(String sStr) {
char[] charArray = new char[2*sStr.length()+1];
for(int i=1; i<charArray.length+1; i++) {
charArray[i-1] = (0 == i % 2) ? (sStr.charAt(i/2 - 1)) : ('\'');
}
return new String(charArray);
}
}
//1,2,3,4,5,6
//'1','2','3','4','5','6'
//PS,效率问题没有考虑,O(∩_∩)O~
public class StringTest {
public static void main(String[] args) {
String sStr = "1,2,3,4,5,6";
System.out.println(sStr);
System.out.println(converseString(sStr));
System.out.println(converseString(sStr.toCharArray()));
}
public static String converseString(String sStr) {
long start = System.nanoTime();
char[] charArray = new char[2*sStr.length()+1];
for(int i=1; i<charArray.length+1; i++) {
charArray[i-1] = (i % 2 == 0) ? (sStr.charAt(i/2 - 1)) : ('\'');
}
System.out.println("StringConverse:\t" + (System.nanoTime() - start));
return new String(charArray);
}
public static String converseString(char[] cArray) {
long start = System.nanoTime();
char[] charArray = new char[2*cArray.length+1];
for(int i=1; i<charArray.length+1; i++) {
charArray[i-1] = (i % 2 == 0) ? (cArray[i/2 - 1]) : ('\'');
}
System.out.println("CharArrayConverse:\t" + (System.nanoTime() - start));
return new String(charArray);
}
}
//1,2,3,4,5,6
//StringConverse: 37423
//'1','2','3','4','5','6'
//CharArrayConverse: 6857
//'1','2','3','4','5','6'用字符数组貌似更快一些,意义不大了...
所以把api中的方法复制出来 稍微改动一下 就成了下面的appendAll方法System.out.println(appendAll("\\w",str1,"'"));
public static String appendAll(String regex , String sourceString , String ){
Matcher matcher = Pattern.compile(regex).matcher(sourceString);
matcher.reset();
boolean result = matcher.find();
if (result) {
StringBuffer sb = new StringBuffer();
do {
String group = matcher.group();
matcher.appendReplacement(sb, +group+);
result = matcher.find();
} while (result);
matcher.appendTail(sb);
return sb.toString();
}else{
return sourceString;
}
}
str1.replaceAll("(?idmsux-idmsux)", "'");
然后做个循环把单引号加上 str = "'"+stringarray[i]+"'"并且建个新array方回去...谁能解释下15楼的代码...不懂