Eliminar todo después de parte de una cadena

Tengo una cadena que se compone de tres partes. La palabra que quiero que sea la cadena (cambios), una parte separada (no cambia) y la última parte que cambia. Quiero eliminar la parte separada y la parte final. La parte separada es “-“, así que lo que me pregunto es si hay una manera de eliminar todo después de una parte segura de la cadena.

Un ejemplo de este escenario sería si quisiera convertir esto: “Desbordamiento de stack – Un lugar para preguntar cosas” en este: “Desbordamiento de stack”. Cualquier ayuda es apreciada!

Por ejemplo, podrías hacer:

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

o

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

(y agregar el manejo de errores relevantes)

Los StringUtils de apache commons proporcionan un método substringBefore

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

Puedes usar esto

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

Quizás eso es lo que buscas:

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

SubString el progtwig Sample para todos los progtwigs y SubString parece ser el más rápido.

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

A continuación se muestra el código del progtwig de ejemplo

  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; 

Esto hará lo que necesites:

 newValue = oldValue.substring(0, oldValue.indexOf("-"); 
 String line = "deltaasm:/u01/app/oracle/product/11.2.0/dbhome_1:N # line addred by agent"; String rep = "deltaasm:"; String after = ""; String pre = ":N"; String aft = ""; String result = line.replaceAll(rep, after); String finalresult = result.replaceAll(pre, aft); System.out.println("Result***************" + finalresult); String str = "deltaasm:/u01/app/oracle/product/11.2.0/dbhome_1:N # line addred by agent"; String newStr = str.substring(0, str.indexOf("#")); System.out.println("======" + newStr);