根据我的db varchar大小拆分一个字符串(转换为块)

时间:2018-03-31 07:46:45

标签: java database string varchar chunks

我想将一个字符串拆分成一系列子字符串以适合我的数据库,其中我的数据库varchar大小为50.如果在切割原始字符串时最多50个字符,那么我需要包括尾部,(逗号)用那个字符串。例如,

我原来的字符串 - [test,datttaaa,testinnggg,proggrrammmm,stringsOpsss,anottttaation,springgmvc,test,data]

  1. 将原始字符串剪切为50个字符,它将是 [test,datttaaa,testinnggg,proggrrammmm,strings 这里子字符串是字符串和我想把它剪掉直到尾随,(逗号)。所以我将这个块分配给 [test,datttaaa,testinnggg,proggrrammmm,

  2. 现在用剩余的块替换原始字符串, stringsOpsss,anottttaation,springgmvc,test,data] 重复上述过程,我的输出将如下所示,

  3. [test,datttaaa,testinnggg,proggrrammmm,

    stringsOpsss,anottttaation,springgmvc,test,

    数据]

    因此将有3个db插入行。写了一个程序,

    Route::post('create', 'ProductController@insert')->name('product.create');
    
    <form class="container" action="{{ route('product.create') }}"
          id="needs-validation" method="post" novalidate>
    

    是否有比上述方法更好的方法或我们可以用来简化的任何替代API?

2 个答案:

答案 0 :(得分:0)

你的方法看起来不错。我不知道任何图书馆能够更好地解决这个问题或者让它变得更容易。

答案 1 :(得分:0)

试试这个(未经测试但应该有效)

public static void main(String[] s) {

        String str = " test, datttaaa, testinnggg, proggrrammmm, stringsOpsss, anottttaation, springgmvc, test, data";
        String[] strArray = str.split(",");
        List<String> outputArray = new ArrayList<String>();

        stringUpTo50Length( Arrays.asList(strArray), outputArray, "");

        for(String s1:outputArray) {
            System.out.println(s1);
        }

    }
    public static void stringUpTo50Length(List<String> strInputArray, List<String> strOutputArray, String outString) {
    for (int i=0; i<strInputArray.size(); i++ ) {
        if (outString.length() + strInputArray.get(i).length() <=50) {
            outString= outString + "," + strInputArray.get(i);
        } else {
            strOutputArray.add(outString.substring(1));
            outString = "";
            stringUpTo50Length(strInputArray.subList(i, strInputArray.size()), strOutputArray, outString);
            break;
        }

    }
    if (outString.equals("")==false) {
        strOutputArray.add(outString.substring(1));
        outString="";
    }

}