我希望得到一个输出第一二从下面的字符串:爪哇 - 分割字符串与多个破折号
first-second-third
所以基本上我想要的是最后的冲刺之前得到的字符串( - ) 。 任何人都可以给我一个最好的解决方案吗?
我希望得到一个输出第一二从下面的字符串:爪哇 - 分割字符串与多个破折号
first-second-third
所以基本上我想要的是最后的冲刺之前得到的字符串( - ) 。 任何人都可以给我一个最好的解决方案吗?
好,许多下来票,但我会添加一个解决方案
最有效的方式做到这一点是使用java.lang.String中#lastIndexOf,返回在此字符串中最后一次出现处的索引指定字符,反向搜索
的lastIndexOf将返回-1,如果仪表不存在
String str = "first-second-third";
int lastIndexOf = str.lastIndexOf('-');
System.out.println(lastIndexOf);
System.out.println(str.substring(0, lastIndexOf)); // 0 represent to cut from the beginning of the string
输出:
第一二
String s = "first-second-third";
String newString = s.substring(0,s.lastIndexOf("-"));
点采取和回答固定。 –
只是一个另一种方式比lastIndex的方法等,使用正则表达式也可以做到,试试下面的代码:
Pattern p = Pattern.compile("\\s*(.*)-.*");
Matcher m = p.matcher("first-second-third");
if (m.find())
System.out.println(m.group(1));
这与'lastIndexOf'不一样。例如,如果你在输入中有一个换行符,它将不起作用。 –
是的,你是对的,我只是给了正则表达式的选项... –
什么你到目前为止尝试过吗? – Luke
获取lastIndefOf(“ - ”)并从中获取从0到这个索引的子字符串它不正确? –
阅读'String.split'的文档 – Jens