2017-09-06 68 views
-6

我希望得到一个输出第一二从下面的字符串:爪哇 - 分割字符串与多个破折号

first-second-third 

所以基本上我想要的是最后的冲刺之前得到的字符串( - ) 。 任何人都可以给我一个最好的解决方案吗?

+2

什么你到目前为止尝试过吗? – Luke

+1

获取lastIndefOf(“ - ”)并从中获取从0到这个索引的子字符串它不正确? –

+0

阅读'String.split'的文档 – Jens

回答

2

好,许多下来票,但我会添加一个解决方案

最有效的方式做到这一点是使用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 

输出:

第一二

+2

“_很好,因为它是一个简单的问题而多次下了选票。”实际上,downvote的原因是:“这个问题没有显示任何研究努力”。 (悬停按钮,你会看到;)) – AxelH

+0

@IdodoE如果没有破折号?它会抛出一个异常 – Makudex

+2

@Makudex你现在问的是如何写一个if语句...?我认为这是你应该开始用Java进行冒险的页面:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html –

0
String s = "first-second-third"; 
String newString = s.substring(0,s.lastIndexOf("-")); 
+0

点采取和回答固定。 –

0

只是一个另一种方式比lastIndex的方法等,使用正则表达式也可以做到,试试下面的代码:

Pattern p = Pattern.compile("\\s*(.*)-.*"); 
Matcher m = p.matcher("first-second-third"); 
if (m.find()) 
    System.out.println(m.group(1)); 
+0

这与'lastIndexOf'不一样。例如,如果你在输入中有一个换行符,它将不起作用。 –

+0

是的,你是对的,我只是给了正则表达式的选项... –