怎么定位、并截取至倒数第二个指定字符
形如这样的字符串:Patch_20130102_行业版_1_0010 怎么定位到倒数第二个“_”,并截取倒数第二个“_”前面的字符串。
现在是这么实现的,不知道还有没有简单的方法,求助呀....
String ss = "Patch_20130102_行业版_1_0010";
String tmp = ss.substring(0,ss.lastIndexOf("_"));
tmp = tmp.substring(0,tmp.lastIndexOf("_"));
System.out.println(tmp);
------解决方案--------------------你这个代码不算太复杂,
用正则:
String ss = "Patch_20130102_行业版_1_0010";
String tmp = ss.replaceAll("(.*)_.*?_.*?", "$1");
------解决方案--------------------这种每段拼接的数据,直接用split "_"得到一个数组[Patch, 20130102, 行业版, 1, 0010]。这个单独的数据都有了,后面要用的话直接拼接,拓展性好点。
String[] str = "Patch_20130102_行业版_1_0010".split("_");
------解决方案--------------------观察楼主的字符串:Patch_20130102_行业版_1_0010
我觉得这个基本是一个业务指定的名称,不会有太大的变化性,用下划线去判断反而有点浪费。这个字符串每次会改变的都是年份和后面的版本号,前面14位的长度是不会改变的,可以直接用substring(0,14)就可以了。
如果这个名称经常改动,一定要用最后第二个下划线来判断的话,建议还是用你自己的那个方法,正则表达式虽然效率高好用,但是可读性比较差,对于经常需要更改的需求,反而加大维护项目的成本。
------解决方案--------------------
刚开始我想复杂了其实只要
String tmp = ss.replaceAll("(.*)_(.*?)_(.*)", "$1");就可以了