永发信息网

java 正则匹配String字符串截取问题。

答案:5  悬赏:0  手机版
解决时间 2021-11-07 13:57
java 正则匹配String字符串截取问题。
最佳答案
1、首先,数字格式化:将空格替换为‘,’,还是将‘,’替换为空格都可以;
2、其次,了解各个数据的特征:表示颜色的都有‘色’,表示包装的都有‘/’,剩下的就是规格
3、最后,截取信息:在字符串中找到特征字符(‘色’、‘/’),特征字符到最近的前一个分隔符和后一个分隔符之间的数据就是想要的数据;

public static void main(String[] args) {
String src = "彩色 10包/箱 12袋/包,11行";
String s1 = src.replaceAll(",", " ");
String[] ss = s1.split(" ");
StringBuffer yanse = new StringBuffer() ;
StringBuffer guige = new StringBuffer() ;
StringBuffer baozhuang = new StringBuffer() ;
for(String s2:ss){
if(s2.indexOf("色")>0){
yanse.append(s2).append(",");
}else if(s2.indexOf("/")>0){
baozhuang.append(s2).append(",");
}else{
guige.append(s2).append(",");
}
}
yanse.deleteCharAt(yanse.length()-1);
guige.deleteCharAt(guige.length()-1);
baozhuang.deleteCharAt(baozhuang.length()-1);
System.out.println("颜色:"+yanse.toString());
System.out.println("包装:"+baozhuang.toString());
System.out.println("规格:"+guige.toString());
}追问yanse.deleteCharAt(yanse.length()-1);
guige.deleteCharAt(guige.length()-1);
baozhuang.deleteCharAt(baozhuang.length()-1);
你好,你这个减一为了什么呢???有颜色没有的情况下会报数组越界追答去掉末尾的“,”,一个字符串“12345678,”长度为9,但是字符在字符串中的位置是从0开始的,所以最后一个字符“,”在字符串中的位置是字符串的长度减1,也就是9-1=8,确实,如果有某类没有的话会越界,那在删除最后一个字符之前加一个判断就行了,比如:
if(null != yanse && 0 < yanse.length()){
yanse.deleteCharAt(yanse.length()-1);
}
其他的也做相同的处理就行了
全部回答
String str="你所言处理的字符串";
String[] tem=str.split(" ");或者String[] tem=str.split(",");
分开了处理追问现在已经分来了,分开之后呢,怎么再分开,颜色,规格,。。。。。谢谢追答同样的办法,分开后的数组tem里不都是字符串吗,拿出来根据需要继续分呢
String str=“ A4,80列,三层,带双列线,二等分 白色 1200页/箱 ,10箱/包 ” ;
String[] value=str.split("\\s");//按空格截取

规格=value[0];
颜色=value[1]
包装=value[2]
这种问题的思路就是要把你的数据格式化,比如将每行的所有 逗号 String.replaceAll(“,”,“ ”);替换成空格,以空格作为分隔符分割每行的数据,得到数组,素组再拼接成需要的字符串,肯定能解决此类问题。不规则的数据无非就是增加了很多判断追问您的意思是,把每条数据的“,”全部替换为空格,然后空格分隔开,得到很多数组,再分别判断每个数组中有没有想要的数据,有的话就拼接成想要的字符串???? 是的,这样的话判断需要很多啊。追答你的数据是分条的,在截取每一条的时候,换行符分割得到的,在执行这层循环的时候就要判断里面的颜色属性的index,颜色属性得到之后,其他的属性都能得到了。颜色属性都在中间,可采用二分法判断
累坏了我,不知道对不对呀
function rookitReg(str){ 
var regex1 = /d+页|d+页,+|(.)*(?=[u4e00-u9fa5]{1}色)|(.)*(?=,[u4e00-u9fa5]{1}色)/g;
var regex2 = /[u4e00-u9fa5]+色s+/g;
var regex3 = /d*[u4e00-u9fa5]/[u4e00-u9fa5]s*,?.*/g;
//str = "A4,80列,三层,带双列线,二等分 白色 1200页/箱 ,10箱/包 ";
//str = "A4,80列,三层,二等分 彩色 1200页/箱 ";
//str = "210毫米*30码 白色 12卷/箱 ";
//str = "白色,300页,36包/箱,107*96毫米  ";
//str = "37*91毫米,300页 白色 18本/包,4包/箱";
//str = "147*101毫米,白色 48包/箱";
str = "147*101毫米,300页,银色外壳 白色 24盒/包,4包/箱";
alert(str.match(regex2));
};
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
准备装修新房,请问用曰丰铝塑管好还是日丰pp
挂入倒档打齿的危害、原因以及如何避免
华硕P8H61-M LX3 PLUS主板与P8H61-MLX有什么
安徽有什么单位在编制水土保持方案?
一块边长45米的油菜地,每平方米收450千克,
网球王子《某日的真田》《忍足的一天》生肉(
异界抗魔越高越好打?抗魔能加攻击力??还是
宁海真的哪里有周转急用钱的地方
饮料能用食用果绿吗?
茼蒿能和冬瓜一起食用吗
古浪县古浪新区2o13年公租房分配方案
福田汽车骏菱可以装导航仪吗?
老鼠笼子里放什么
怎么后期觉得武媚娘好可恨,皇后好可怜
马骏和一可是那个电视剧里的
推荐资讯
兰州兰州榆中兴隆山门票免费吗?
数字谐音中...73是什么意思
万科梅沙书院难考吗?课程体系是英系还是美系
求购真正的土蜂蜜!货好的来
560除(70乘2)用简便怎么算
男生夏天深绿色中裤+什么颜色T好看?
沙湾村地址好找么,我有些事要过去,
孙女百日庆典祝福语
上面是竹字头,下面带冉什么字?
内蒙古2014年10月1日后退休人员的增加部分的
找一个对你负责的 而不是对爱情负责的 是什么
“我强忍不倒因为我身后空无一人”下一句是什
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?