求一解析字符串的方法~~~~~~~~~!!!!!

我嘞个去 2012-07-25 03:20:23
比如 这样一个字符串

String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00"


要求:拿到字母中间的值,三个黄颜色字母只只需要其中之一就行,当然还包括最后RQ后比的00

...全文
186 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hp8252191 2012-07-26
  • 打赏
  • 举报
回复
2楼,你的方法太牛了,但是输出颜色会不会变啊???我一直在考虑这个问题~~~
ccqqct 2012-07-26
  • 打赏
  • 举报
回复
没看明白,你说的这个颜色是你举的例呢,还是为了方便看所以增加了颜色呢,而实际数据拆分只是根据你有颜色的字母呢,还是原始字符串是使用了你YY之类的 样式,你最好贴要拆分的原始字符,因为代码里本没有颜色一说,只能根据字符串拆分
huage 2012-07-25
  • 打赏
  • 举报
回复

String str = "YY11TG22MC匀速运动YQ44";
str = str.replaceAll("[\\[][^\\]]+[\\]][a-zA-Z]+\\[/color\\]", ",");
String [] strs =str.split(",") ;
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}

笨办法
我嘞个去 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:
带颜色后边的数字 不一定字母后边都是数字 我只是模拟一些数据而已 里边可以有数字和汉字 也可能出现字母(不考虑数据里边的字母和颜色字母重复)


那貌似更简单了:
Pattern p = Pattern.compile("\\D(\\d+)($|\\D)");
[/Quote]

这个真不对

比如这个字符串
String str = "YYA000000333CDD001TG2MC电子票DP1JE1540RQ2012-07-19QT备注"
我要获取的值就是
A000000333CDD001
2
电子票
1
1540
2012-07-19
备注
MiceRice 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
带颜色后边的数字 不一定字母后边都是数字 我只是模拟一些数据而已 里边可以有数字和汉字 也可能出现字母(不考虑数据里边的字母和颜色字母重复)
[/Quote]

那貌似更简单了:
Pattern p = Pattern.compile("\\D(\\d+)($|\\D)");
我嘞个去 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
2楼的同学,所用表达式不是很精确,因为都是用 *,这个可以表示 0 ~ N

建议修改为:

String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00";
Pattern p = Pattern.compile("[a-zA-Z](\\d+)($|[a-zA-Z])");
Matcher m = p.matcher(str);
w……
[/Quote]
[Quote=引用 2 楼 的回复:]
Java code
String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00";
Pattern p = Pattern.compile("[a-zA-Z]*(\\d+)[a-zA-Z]*");
Matcher m = p.matcher(str);
while(m.find()){
……
[/Quote]

String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00"

带颜色后边的数字 不一定字母后边都是数字 我只是模拟一些数据而已 里边可以有数字和汉字 也可能出现字母(不考虑数据里边的字母和颜色字母重复) 所以这样写的话 出来的值不对
MiceRice 2012-07-25
  • 打赏
  • 举报
回复
2楼的同学,所用表达式不是很精确,因为都是用 *,这个可以表示 0 ~ N

建议修改为:

String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00";
Pattern p = Pattern.compile("[a-zA-Z](\\d+)($|[a-zA-Z])");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
hucainiao 2012-07-25
  • 打赏
  • 举报
回复
2楼的解法很犀利 学习了 嘿嘿
huage 2012-07-25
  • 打赏
  • 举报
回复
什么意思哦 没明白要怎么做 是不是
String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00"
变成
String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00"
去掉那些[]就可以了
it491328322 2012-07-25
  • 打赏
  • 举报
回复
对。。。正则表达式几行代码就能搞定。。。
brightyq 2012-07-25
  • 打赏
  • 举报
回复
String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00";
Pattern p = Pattern.compile("[a-zA-Z]*(\\d+)[a-zA-Z]*");
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
我嘞个去 2012-07-25
  • 打赏
  • 举报
回复
我去,这样居然不显示样色
不用java标签了 直接这样子吧!
String str = "YY11TG22MC333YQ44DP555HK666JE777SJ888RQ00"

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧