java特殊字符分隔字符串_Java 根据一些特殊分割规则分割字符串

例如:设计根据一些特殊分割规则,来分割字符串。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

)

;


版权声明:本文为weixin_42469191原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。