逗号分割符--字段中含逗号等情况的解析方法Java实现
最近在处理文本字符串时,没一行数据都是按照逗号分割的,每个字段值一般情况是带有双引号的,但是有的字段值里面还包含逗号,甚至有的字段就没有双引号,这个分割起来就有点麻烦了
下面说一下我解决方法,如果谁有更好的方法,欢迎加入讨论O(∩_∩)O~
/**
* Java字符串逗号分割解析方法
* 本专门针对双引号中还有逗号或者某个字段无双引号的情况而设计的
* 例如要将字符串String sss="101,\"a\",\"中国,江苏\",\"b\",\"中国,北京\",1,0,\"c\""按照逗号进行分割解析
* 正确的split的结果是 (101)(a)( 中国,江苏) ( b)( 中国,北京) ( 1)( 0)( c)
* 如果用java的split方法的话,当遇到(中国,北京)这些字段值时就会多分割了一个字段出来,就不正确了
* 同时,上面的101 ,1,0都不带要双引号,我们期望的理想字符串当然都是带双引号的字段值组成的字符串了
* 但是发生上面的情况时我们感觉很恼火,以上就是本方法设计的初衷,其实这方法是大学课本数据结构中的提到的,
* 在此用Java实现了一下,但是方法执行的效率我还没有测试
* @author HsuChan
* @version 2014-11-30 22:30
* @param sss
* @return String []
*/
public String [] commaDivider(String sss){
//双引号开始标记
int qutationStart =0;
//双引号结束标记
int qutationEnd =0;
char[] charStr = sss.toCharArray();
//用于拼接字符 作为一个字段值
StringBuffer sbf = new StringBuffer();
//结果list
List<String> list = new ArrayList<String>();
//逐个字符处理
for(int i=0;i<charStr.length;i++) {
//在此之前还未遇到双引号并且当前的字符为\"
if(qutationStart == 0&&charStr[i] == '\"') { qutationStart = 1;
qutationEnd = 0;
continue;
} else if(qutationStart == 1&&charStr[i] == '\"'){
//在此之前遇到了双引号并且当前的字符为\" 说明字段拼接该结束了
qutationStart = 0;
qutationEnd = 1;
//当最后一个字符是双引号时,由于下次循环不会执行,所以在此保存一下
if(i == charStr.length-1&&sbf.length() != 0) {
list.add(sbf.toString());
sbf.setLength(0);
}
continue;
} else if(qutationStart == 1&&charStr[i] == ','&&qutationEnd == 0) {
//处理 \"中国,北京\"这种不规范的字符串
sbf.append(charStr[i]);
continue;
} else if(charStr[i] == ',') {
//字段结束,将拼接好的字段值存到list中
list.add(sbf.toString());
sbf.setLength(0);
continue;
}
//不属于分隔符的就拼接
sbf.append(charStr[i]);
if(i == charStr.length-1&&sbf.length()!=0) {
list.add(sbf.toString());
sbf.setLength(0);
} } return (String[])list.toArray(new String[list.size()]);
}
本文属100% 原创,如有分享请注明出处,谢谢。
逗号分割符--字段中含逗号等情况的解析方法Java实现的更多相关文章
- 在MySQL字段中使用逗号分隔符
大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性. 被分割的字段一定是有限而且数量较少的,我们不可能在一个 ...
- 如何将字段中带逗号的SQLite数据库数据导入到MySQL
以前在数据库导入中没有遇到过什么问题,如下这样导入 load data local infile 'D:\data.csv' into table table1 fields terminated b ...
- sql like in 语句获取以逗号分割的字段内的数据
From:http://www.cnblogs.com/goody9807/archive/2011/07/27/2118107.html sql中的某个字段用“,”分隔数据,需要获取数据的时候直接把 ...
- JS-为金额添加千分位逗号分割符
前言:这个功能在前端页面中使用的还是比较多的,正好我们的项目中也有使用此功能,不过YY同学写的代码不像个方法的样子,一个入口中间又插了几道子,所 以,我写了下面这个方法,经过测 ...
- js 去掉以逗号分割的字符串中头尾和中间多余的逗号
let permission = ",,,106,105,108,,,109,110,107,,101,,," let permission = "106,105,108 ...
- mongodb查询数据库中某个字段中的值包含某个字符串的方法
正则表达式最能解决: 例如: db.getCollection(.*$/}) 这里主要是注意正则表达式要写对,该转义的注意转义,否则报错.
- 黄聪:wordpress向mysql字段中保存html代码(使用add_option()方法),然后无法显示出问题
你可以把" 引号去掉了再进库,或者使用 stripslashes_deep() <?php $str = "Is your name O\'reilly?"; // ...
- iOS开发中XML的DOM和SAX解析方法
一.介绍 dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文 ...
- jquery中如何以逗号分割字符串_百度知道
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
随机推荐
- WPF DataGrid绑定到数据源的方法
string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["str"].Connect ...
- CRM(客户关系管理)
CRM最初是由Gartner Group提出的. CRM定义:"客户关系管理(CRM),是代表增进赢利.收入和客户满意度而设计的,企业范围的商业战略." 我们可以看出,Gartne ...
- JointBoost+CRF+GraphCut做手绘草图的分割
研究生做的稍微有点水平的就这两个项目了:一个是利用SVM做手绘草图的分类,另一个是利用JointBoost+CRF做手绘草图的分割.总结得出的经验是做研究的方法就是将别人大神的代码看懂然后改成适合自己 ...
- NodeJs框架
Node.js非常适用于Web开发,但是现在无论是一个网站,还是Web App都已经成为包括很多不同部分,如前端.数据库.业务模块.功能模块等等的大型项目,使用Node.js从零开始进行Web开发,也 ...
- 安装 Ruby, Rails 运行环境 常见的错误
安装部署ruby on rails 的环境时并不是想的那么顺利 这个是我遇到的问题及解决的方式 参考安装博客: (1) https://ruby-china.org/wiki/install_ruby ...
- Another app is currently holding the yum lock
摘要 在使用yum安装的时候,出现该error. 错误 Another app is currently holding the yum lock; waiting for it to exit... ...
- 【PHP开发篇】一个统计客户端商机提交的获取IP地址
1.对客服提交数据的ip地址记录. 获取ip地址的方法: public function getIP() { global $ip; if (getenv("HTTP_X_REAL_IP&q ...
- Android下如何计算两经纬点之间距离
节选自百度地图API: 若开发者使用的是百度地图或定位API,且版本在1.3.5以后的, 路线规划提供了获取路线距离的方法,见MKRoutePlan 类的 getDistance 方法. 如果是计算任 ...
- GCC 编译优化指南(转)
GCC 编译优化指南(转) http://www.jinbuguo.com/linux/optimize_guide.html 作者:金步国 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然 ...
- OpenVpn简单架设
首先Wget wget http://swupdate.openvpn.org/as/openvpn-as-2.0.24-CentOS6.i386.rpm wget http://swupdate.o ...