java截断字符串问题,用逗号截断,但是值里面有逗号

问题描述

java截断字符串问题,用逗号截断,但是值里面有逗号

一个SQL语句的values里面的值,这里是三个字段,null,'0,1,2,3','2014-03-12 18:38:26.467319'
现在的问题是用逗号截断,第二个字段的值'0,1,2,3'也会被截断,求解决方法,怎么截断成三个
串 null 0,1,2,3 2014-03-12 18:38:26.467319

解决方案

   public static void main(String[] args) {

        String s = "null,'0,1,2,3','2014-03-12 18:38:26.467319'";

        final String[] split = s.split("'");

        for (String ss : split) {

            final String replaceAll = ss.replaceAll("^,|,$", "");
            if (replaceAll.length() > 0) {
                System.out.println(replaceAll);
            }
        }

    }

解决方案二:

只能借助于单引号,截取的时候先用(,')截取,再对截取的信息用逗号截取。也就是先考虑字符串,再对是数字型,数字型(可以根据有单引号的就不是数字)的方式进行二次处理。

解决方案三:

CSV 格式解析时不能简单按逗号分割。而是:
每个字段开始时(行首或用于分割的逗号之后),先判断下个字符:
a)如果是行结束,当前字段是null所以输出null,结束一行;
b)如果是逗号,输出null,前进一个字符(下个逗号之后);
c)如果是单引号,就找下一个单引号(如果有连续两个单引号跳过继续向后找),然后把头尾单引号内的字符串截取出来,两个单引号替换为一个单引号,输出,前进到(必须是单引号后的)逗号之后。
d)其它,就找下一个逗号,然后把当前位置到逗号前的字符串截取出来,输出,前进到逗号之后。

解决方案四:

刚刚没有考虑全面、再次重写

 public static void main(String[] args) {

        String s = "'',null,123,'0,1,2,3','2014-03-12 18:38:26.467319'";

        //以逗号分隔数据
        final String[] split = s.split(",");

        List<String> stringList = new ArrayList<>();

        //临时值存储、例如 '0,1,2,3' 字符串中包含,的参数值
        String temp = "";

        try {
            for (final String one : split) {

                final int oneLength = one.length();

                //是否以 ' 开始或者结束 boolean 值
                final boolean isStartSingleQuotes = one.indexOf("'") == 0;
                final boolean isEndSingleQuotes = one.lastIndexOf("'") == oneLength - 1;

                //如果当前不是处理'0,1,2,3'的数据
                if (!temp.isEmpty()) {
                    //如果以 ' 结束 表示追加数据完毕,否则继续添加
                    if (isEndSingleQuotes) {
                        temp += "," + one;
                        final String substring = temp.substring(1, temp.length() - 1);
                        stringList.add(substring);
                        temp = "";
                    } else {
                        temp += "," + one;
                    }
                    continue;
                }

                //如果以'开始,判断是否以'结束,如果是表示是字符串
                //否则为 '1,2,3'类似的参数值记录到临时 temp String 中
                if (isStartSingleQuotes) {
                    if (isEndSingleQuotes) {
                        final String substring = one.substring(1, oneLength - 1);
                        stringList.add(substring);
                    } else {
                        temp += one;
                    }
                } else {
                    stringList.add(one);
                }
            }
            System.out.println(stringList);
        } catch (Exception e) {
            System.err.printf("参数值不正确、解析错误 error :" + e.getMessage());
        }

    }
时间: 2024-09-17 04:23:05

java截断字符串问题,用逗号截断,但是值里面有逗号的相关文章

java- 将截断字符串或二进制数据问题,Java,sql

问题描述 将截断字符串或二进制数据问题,Java,sql 我开的长度足够大了,可是还是报错 ![图片说明](http://img.ask.csdn.net/upload/201602/17/1455723342_499331.png) public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1){ Connection ct=null; Statement stm=null; PreparedStatement ps=nu

T-SQL字符串相加之后被截断的那点事

原文:T-SQL字符串相加之后被截断的那点事     本文出处:http://www.cnblogs.com/wy123/p/6217772.html    字符串自身相加, 虽然赋值给了varchar(max)类型的变量,在某些特殊情况下仍然会被"截断",这到底是varchar(max)长度的问题还是操作的问题?   1,两个不超过8000长度的字符串自身相加,其结果长度超过8000之后会被截断: 不多说,直接上例子:定义一个字符串,赋值给 varchar(max)类型的变了,字符创

student-出现截断字符串怎么办???急急急……

问题描述 出现截断字符串怎么办???急急急-- use student goinsert into student(snosname ssex sage sdept)values('200515001''赵菁菁''女'23'CS')('200515002''李咏''男'20'CS')('200515003''张力''男'19 'CS')('200515004''张衡''男'18'IS')('200515005''张向东''男'20'IS')('200515006''张向丽''女'20'IS')(

MSSQL 将截断字符串或二进制数据问题的解决方法_MsSql

地图数据存放在sqlserver 2008中,使用mapxtreme7 开发时,使用Feature.Update()方法时出错的提示包含"MSSQL 将截断字符串或二进制数据" 主要原因就是给某个字段赋值时,内容大于字段的长度或类型不符造成的 解决方法: 一个是修改数据库字段大小: 再一就是是加强数据强壮性,严格的输入判断. 防止添加的信息类型或者长度与数据库表中字段所对应的类型不符合.

java拼接字符串时去掉最后一个多余逗号的方法_java

本文实例讲述了java拼接字符串时去掉最后一个多余逗号的方法.分享给大家供大家参考.具体分析如下: 先看下面这段代码: for (int t = 0; t < memberLen; t++) { memTemp = stafferMap.get(strMember[t]); if(memTemp != null){ memberNames += memTemp + ","; } } 以上的代码,拼接的字符串会多一个",",比如:"str1,str2,

Win7 x64 下报 “。。。将截断字符串或二进制数据”错误。而其他版本不出错

问题描述 原先在.NET2.0下开发的程序,今天在一台WIN764位的机器上运行,用户登录时出现"...将截断字符串或二进制数据"错误.第一次出现,此前在其他机器上都没有出现,包括我自己的WIN764位机器,出问题的机器上装的是.NET4.5版本,不让安装.NET2.0.,难道是和.NET的中文版本有问题?请高手指点 解决方案 解决方案二:保存到数据库的数据超出字段定义的长度解决方案三:数据库字段太短了.解决方案四:关于数据库字段太短的是可能的,一般提示就是这个.但是我的程序是在其他机

MSSQL 将截断字符串或二进制数据问题的解决方法

地图数据存放在sqlserver 2008中,使用mapxtreme7 开发时,使用Feature.Update()方法时出错的提示包含"MSSQL 将截断字符串或二进制数据" 主要原因就是给某个字段赋值时,内容大于字段的长度或类型不符造成的 解决方法: 一个是修改数据库字段大小: 再一就是是加强数据强壮性,严格的输入判断. 防止添加的信息类型或者长度与数据库表中字段所对应的类型不符合.

编辑gridview时,将截断字符串或二进制数据。 语句已终止。

问题描述 编辑gridview时,将截断字符串或二进制数据.语句已终止. 解决方案 解决方案二:这是编辑的语句解决方案三:求帮忙啊啊啊啊啊解决方案四:depname这个列接收的值不正确.((DropDownList)GridView1.Rows[e.RowIndex].FindControl("DDLXueli")).Text解决方案五:那个DROPDOWNLIST后面.然后识别没有TEXT的解决方案六:引用3楼guwei4037的回复: depname这个列接收的值不正确.((Dro

JavaScript截断字符串的方法_javascript技巧

本文实例讲述了JavaScript截断字符串的方法.分享给大家供大家参考.具体如下: 这里JavaScript截断字符串,类似于substr(),只不过这个函数不会截断单词,在发生截断后,会添加一个省略号 if (!function_exists('subsent')) { function subsent($string, $start = 0, $length = 0, $cap = '...') { if ($length <= 0 || strlen($string) < $lengt