例如:设计根据一些特殊分割规则,来分割字符串。QQ:123456789
当时没怎么考虑那么多情况,直接使用了String的split方法来进行分割。
分割字符串 str.split(regex[分割字符串的标识符]),如果字符串中没有统一的分割符,可以用“|”来定义多个分割符。
public class WordsSplit {
public static void main(String[] args) {
String word = "设计根据一些特殊分割规则,来分割字符串。QQ:123456789";
String[] ws = word.split(",|。");
System.out.println(ws[0]+"/n"+ws[1]+"/n"+ws[2]);
}
执行的结果:
设计根据一些特殊分割规则
来分割字符串
QQ:123456789
但是字符串含有特殊的字符如:SQL语句中的"("和")"再次使用上面的代码时就不行了。
如:Select * from emp where empid in (23,45);等。
这里就需要自己特殊的处理了。代码也是很简单,如下:
import java.util.*;
import org.apache.commons.lang.StringUtils;
public class WordsSplit {
public static void main(String[] args) {
String sql = "Select * from emr_clinicemr";
WordsSplit words = new WordsSplit(sql);
System.out.println(words.toString());
}
public WordsSplit(String sql) {
wordList = new ArrayList();
sql = sql.trim().toLowerCase();
sql = (new StringBuilder(String.valueOf(sql))).append(" ").toString();
String word = "";
for (int i = 0; i < sql.length(); i++) {
String str = String.valueOf(sql.charAt(i));
if (StringUtils.isBlank(str)) {
if (word.trim().length() >= 1) {
addWordToList(word);
word = "";
}
} else if (str.equals(",") || str.equals("(") || str.equals(")")) {
addWordToList(word);
addWordToList(str);
word = "";
} else {
word = (new StringBuilder(String.valueOf(word))).append(str)
.toString();
}
}
}
private void addWordToList(String word) {
if (word.trim().length() > 0)
wordList.add(word);
}
public String toString() {
StringBuilder sb = new StringBuilder();
String str;
for (Iterator iterator = wordList.iterator(); iterator.hasNext(); sb
.append((new StringBuilder(String.valueOf(str))).append("/n")
.toString()))
str = (String) iterator.next();
return sb.toString();
}
public List getWordList() {
return wordList;
}
private List wordList;
}
执行的结果:
select
*
from
emp
where
empid
in
(
23
,
45
)
;