java分割文本字符串的方法
問題:在項目中,當保存數(shù)據(jù)超過數(shù)據(jù)庫字段列長度限制時,如何解決?
一種常見的解決辦法是:截串存取。顧名思義,就是對大文本數(shù)據(jù)按指定長度進行截取,返回結(jié)果集依截取順序存儲在新表中。并通過在新表中創(chuàng)建一個type字段來標識新表中截取的內(nèi)容對應(yīng)舊表中的字段名,而舊表中相應(yīng)的字段不再直接存放大文本數(shù)據(jù),而是存放標識符。
這里,提供一種工具類,用來分割文本字符串,返回List結(jié)果集供下一步使用。
public class StringUtil {
/**
* @Name: getContentByList
* @Description: 字符串切割
* @Author: 張(作者)
* @Version: V1.00 (版本號)
* @Create Date: 2017-6-26(創(chuàng)建日期)
* @Parameters: wholecontent:傳遞的文本字符串;
cutcount:切割字符串的長度
* @Return: List:切割字符串形成的集合,存放結(jié)果集
*/
public static List<String> getContentByList(String wholecontent,int cutcount){
List<String> list = new ArrayList<String>();
//獲取完整內(nèi)容字符串的總長度
int contentlen = wholecontent.length();
//內(nèi)容截取,用內(nèi)容總長和截取長度進行比較,無須截取的話直接插入
if (contentlen < cutcount){
list.add(wholecontent);
}
//內(nèi)容長度超過截取長度
else{
//定義并初始化內(nèi)容段落
String contentpart ="";
//定義并初始化被截取的段落數(shù)量
int contentround =0;
//開始截取的位置
int begincount = 0;
//判斷截取的段落數(shù)
int contentcutpart = contentlen/cutcount;
int contentcutparts = contentlen%cutcount; //求余數(shù)
//若余數(shù)為0,說明被整除,內(nèi)容的長度正好是截取長度的倍數(shù)。
if (contentcutparts==0){
contentround = contentcutpart;
}
else{
contentround = contentcutpart+1;
}
//循環(huán)截取內(nèi)容
for (int i = 1; i <= contentround; i++) {
//如果不是最后一個截取部分
if (i != contentround){
//按照截斷長度截取內(nèi)容
contentpart = wholecontent.substring(begincount, cutcount*i);
}
else{
//截取最后一部分內(nèi)容
contentpart = wholecontent.substring(begincount, contentlen);
}
//賦值下一截取部分的起點位置
begincount = cutcount*i;
list.add(contentpart);
}
}
return list;
}
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Security框架:如何使用CorsFilter解決前端跨域請求問題
這篇文章主要介紹了Security框架:如何使用CorsFilter解決前端跨域請求問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
java線程池ThreadPoolExecutor的八種拒絕策略示例詳解
ThreadPoolExecutor是一個典型的緩存池化設(shè)計的產(chǎn)物,因為池子有大小,當池子體積不夠承載時,就涉及到拒絕策略。JDK中已預設(shè)了?4?種線程池拒絕策略,下面結(jié)合場景詳細聊聊這些策略的使用場景以及還能擴展哪些拒絕策略2021-11-11

