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

)

;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值