JavaEye问答:
java字符串解析
本来想回那帖的,但从学校坐了趟公交回到住处那问题就已经关闭了 T T
其实我是想说,这问题用正则表达式解决是如此的简单……因为那帖给的字符串是有规律的:
带有相同数字的项是相邻的。
例如说用Ruby的话,在irb里测试一下:
irb(main):001:0> src = '22:w,22:c,21:r,7:r,7:w,7:c,8:w,8:c,8:d,9:r,9:w,9:c,9:d,10:r'
=> "22:w,22:c,21:r,7:r,7:w,7:c,8:w,8:c,8:d,9:r,9:w,9:c,9:d,10:r"
irb(main):002:0> re = /((\d+):\w(,\2:\w)*),/
=> /((\d+):\w(,\2:\w)*),/
irb(main):003:0> expected_result = '22:w,22:c;21:r;7:r,7:w,7:c;8:w,8:c,8:d;9:r,9:w,9:c,9:d;10:r'
irb(main):004:0> result = src.gsub re, '\1;'
=> "22:w,22:c;21:r;7:r,7:w,7:c;8:w,8:c,8:d;9:r,9:w,9:c,9:d;10:r"
irb(main):005:0> result == expected_result
=> true
也就是说那个问题用一行代码的函数就能解决:
def reformat(src)
src.gsub /((\d+):\w(,\2:\w)*),/, '\1;'
end
即便用Java也仍然是同样的简单:
public class TestRegex {
public static String reformat(String src) {
return src.replaceAll("((\\d+):\\w(,\\2:\\w)*),", "$1;");
}
public static void main(String[] args) {
String src = "22:w,22:c,21:r,7:r,7:w,7:c,8:w,8:c,8:d,9:r,9:w,9:c,9:d,10:r";
String expected = "22:w,22:c;21:r;7:r,7:w,7:c;8:w,8:c,8:d;9:r,9:w,9:c,9:d;10:r";
String result = reformat(src);
System.out.println(result.equals(expected));
}
}
当然如果输入的字符串没有上述的特殊属性就无法保证这个方法的正确性了。只不过我猜那个问题原本作为源的字符串就是从什么别的程序输出得到的,或许本来就有这样的规律,值得利用。
分享到:
相关推荐
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
java解析Json字符串java解析Json字符串java解析Json字符串java解析Json字符串
有关java里的一些字符串的总结,适合java初学者学习。
java解析xml字符串,添加属性,更新属性等
java代码-使用java解决从字符串中解析二维数组的源代码 ——学习参考资料:仅用于个人学习使用!
java字符串处理取出括号内的字符串 都是我自己试过可以用的j
java 字符串 详细实例代码 字符串检索 可改变字符串 字符串生成器 日期和时间字符串格式化
java中求字符串表达式的值看起来很伤脑筋,但如果你用BeanShell,一切都变得很简单。
使用Java操作JSON字符串对象,使用Java操作JSON字符串对象
java压缩字符串
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...
java 字符串的加密 java 字符串的加密 java 字符串的加密
89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符...
这是STM32串口配置接收字符串解析源码,采用寄存器方式编写串口的初始化所有代码。 注释、结构清晰。 MCU型号: ST32F103ZET6 使用的串口是串口1. PA9 PA10 中断和查询方式接收字符串。 接收之后解析完成控制LED灯。
java 分解字符串 java 分解字符串 java 分解字符串
java字符串的各种编码转换. java字符串的各种编码转换
JAVA 字符串 操作
96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip...
29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29...
Java字符串长度不够前面或后面补0