删除部分string后的所有内容

我有一个由三部分组成的string。 我希望string是(改变),一个分离的部分(不改变)和改变的最后部分。 我想删除分隔部分和结尾部分。 分离的部分是“ – ”,所以我想知道的是,如果这是一种方法来删除所有string的一部分之后的一切。

这个场景的一个例子是,如果我想把这个:“堆栈溢出 – 一个问问题的地方”放到这里:“堆栈溢出”。 任何帮助表示赞赏!

例如,你可以这样做:

String result = input.split("-")[0]; 

要么

 String result = input.substring(0, input.indexOf("-")); 

(并添加相关的error handling)

apache commons的StringUtils提供了一个substringBefore方法

StringUtils.substringBefore("Stack Overflow - A place to ask stuff", " - ")

你可以使用这个

 String substr = mysourcestring.substring(0,mysourcestring.indexOf("-")); 

我为所有的SubString创build了Sample程序,而SubString似乎是最快的一个。

 Using builder : 54 Using Split : 252 Using Substring : 10 

以下是示例程序代码

  for (int count = 0; count < 1000; count++) { // For JIT } long start = System.nanoTime(); //Builder StringBuilder builder = new StringBuilder( "Stack Overflow - A place to ask stuff"); builder.delete(builder.indexOf("-"), builder.length()); System.out.println("Using builder : " + (System.nanoTime() - start) / 1000); start = System.nanoTime(); //Split String string = "Stack Overflow - A place to ask stuff"; string.split("-"); System.out.println("Using Split : " + (System.nanoTime() - start) / 1000); //SubString start = System.nanoTime(); String string1 = "Stack Overflow - A place to ask stuff"; string1.substring(0, string1.indexOf("-")); System.out.println("Using Substring : " + (System.nanoTime() - start) / 1000); return null; 

也许这就是你在找什么:

 String str="Stack Overflow - A place to ask stuff"; String newStr = str.substring(0, str.indexOf("-")); 

这将做你所需要的:

 newValue = oldValue.substring(0, oldValue.indexOf("-");