Java如何截取指定字符串

性别:女士|民族:汉族|生日:1990-9-22
如何截取 性别:到 |民族之间的信息
判断“性别:”和“|民族”之间的字符串
截取成功之后还要赋值,String sex=“女士” String brith=“1990-9-22

产生的数据都是变量

String reg1 = ".*性别:([^\\|]*)\\|?.*";
String reg2 = ".*民族:([^\\|]*)\\|?.*";
String reg3 = ".*生日:([^\\|]*)\\|?.*";

String str = "性别:女士|民族:汉族|生日:1990-9-22";

String sex = str.replaceAll(reg1, "$1");
String mz = str.replaceAll(reg2, "$1");
String brith = str.replaceAll(reg3, "$1");
System.out.println (sex);
System.out.println (mz);
System.out.println (brith);

追问

正则表达式就是这个,问下你的reg1是匹配 性别: 到 |的吗??能不能匹配 性别 到 |民族
之间的

追答

都输出了啊,你可以试试啊,我测试是的啊


有图为证啊:


温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-22
你的题意可能有点问题,都指定的字符串了,还截取吗?是不是截取指定字符串出现位置之后或之前的字符串?
第2个回答  2014-03-27
String info[] = 你定义的字符串.split("|");
字符串数组里面就是你要的了
第3个回答  2014-03-27
int start = str.indexOf(":");

int end = str.indexOf("|");
str = str.substring(start,end);
不知道截取包不包括end,你试试吧...追问

截取成功还要赋值,你用:和 | 判断,我分不清哪个是性别,哪个是生日

追答

indexOf是顺序取第一个的么- -
赋值?用字符串替换么,那是replace...
或者就按他们说的,反正留着分隔符,用split割开,再取从:的start到length就行了吗
最后完了再拼起来..
String str;//要改的
String[] str1 = {"男人","羌族","1990-1-1"};
String[] strArr = str.split("|");
for(int i=0;i<strArr.length;i++){
String s1=strArr[i].substring(strArr[i].indexOf(":"),strArr[i].length);//s1就是每个冒号后面的值了么..

要替换就反过来截取么,把0到冒号截取下来,再粘上str1[i],最后用"|"连起来吗...

}

第4个回答  2014-03-27
int startIndex = str.indexOf(":")+1;
int endIndex = str.indexOf("|");
String sex = str.substring(startIndex,endIndex);
int end = str.lastIndexOf(":")+1;
String birth = str.subString(end);追问

截取之后我还要赋值

追答

现在这个可以了,你试下,性别和生日都可以取到

相似回答