2012-06-05 9 views
23

Quiero reemplazar la primera aparición de Cadena en lo siguiente.Cómo reemplazar la primera aparición de cadena en Java

String test = "see Comments, this is for some test, help us" 

** Si prueba contiene la entrada de la siguiente manera no debe reemplazar

  1. ver los comentarios, (con espacio al final)
  2. Véanse las observaciones,
  3. ver los comentarios **

Quiero obtener la salida de la siguiente manera,

Output: this is for some test, help us 

Gracias de antemano,

+8

[¿Qué has probado?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – user1329572

+1

Puedes buscar directamente tu pregunta, o cambiar los ojos un poco Poco a la derecha de este comentario y verifique las preguntas RELACIONADAS ... – hovanessyan

+1

O puede consultar la documentación de ['String'] (http://docs.oracle.com/javase/6/docs/api/java/ lang/String.html) y encuentra 'replaceFirst()' ... – brimborium

Respuesta

59

Se puede utilizar replaceFirst(String regex, String replacement) método de cadena.

+0

Esto es para REGEXes no, cadenas. –

+0

@ Sridhar-Sarnobat esto se entiende por los parámetros que he mencionado en la respuesta, ¿supongo? Y así es como se supone que debe ser usado. . – Asif

+0

Sí. Lamentablemente, la mayoría de los lectores que han votado a favor venían en busca de la respuesta que le dieron a rathar, más de lo que OP preguntó (y de lo que estaba buscando). –

14

Use substring(int beginIndex):

String test = "see Comments, this is for some test, help us"; 
String newString = test.substring(test.indexOf(",") + 2); 
System.out.println(newString); 

SALIDA:

esto es por alguna prueba, nos ayudan

+1

Espera, ¿y si la cadena que deseas reemplazar no está al principio de la cadena de entrada? –

-1

Usar cadena replaceFirst intercambiar la primera instancia del delimitador para algo único:

String input = "this=that=theother" 
String[] arr = input.replaceFirst("=", "==").split('==',-1); 
String key = arr[0]; 
String value = arr[1]; 
System.out.println(key + " = " + value); 
7

bibliotecas Debe utilizar ya probados y bien documentados en favor de escribir su propio código.

org.apache.commons.lang3. 
    StringUtils.replaceOnce("coast-to-coast", "coast", "") = "-to-coast" 

Javadoc

Incluso hay una versión que es sensible a mayúsculas (que es bueno).

Maven

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.7</version> 
</dependency> 

Créditos

Mi respuesta es un aumento de: How to replace string only once without regex in Java?

3

Puede utilizar siguiente instrucción para sustituir primera ocurrencia de la cadena.

String result = input.replaceFirst(Pattern.quote(stringToReplace), stringToReplaceWith); 

Este link tiene un programa completo que incluye casos de prueba.

1

Puede usar el siguiente método.

public static String replaceFirstOccurrenceOfString(String inputString, String stringToReplace, 
     String stringToReplaceWith) { 

    int length = stringToReplace.length(); 
    int inputLength = inputString.length(); 

    int startingIndexofTheStringToReplace = inputString.indexOf(stringToReplace); 

    String finalString = inputString.substring(0, startingIndexofTheStringToReplace) + stringToReplaceWith 
      + inputString.substring(startingIndexofTheStringToReplace + length, inputLength); 

    return finalString; 

} 

Siguiendo link proporcionar ejemplos para la sustitución de la primera aparición de cadena utilizando con y sin expresiones regulares.

Cuestiones relacionadas