quiero reemplazar la última cadena que es un ,
con )
Reemplazar última parte de la cadena de
Supongamos que la cadena es:
Insertar en dual (nombre, fecha,
para convertirse a:
Insertar en dual (nombre, fecha)
quiero reemplazar la última cadena que es un ,
con )
Reemplazar última parte de la cadena de
Supongamos que la cadena es:
Insertar en dual (nombre, fecha,
para convertirse a:
Insertar en dual (nombre, fecha)
El siguiente código debería reemplazar la última aparición de ','
con ')'
.
StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")");
yourString = b.toString();
Nota Esto lanzar excepciones si el String
no contiene una ','
.
Compruebe la longitud de la cuerda, revise el último carácter (si tiene la longitud es fácil) y reemplácelo - cuando sea necesario. Esta solución no es lang. específico. solo usa un sentido común.
str = str.substring(0, str.lastIndexOf(",")) + ")";
Eso cambiaría el último ",", indiscriminado si es el último carácter en una Cadena o no. – ty812
Funciona dondequiera que esté ubicado ','; sin embargo, ignorará todo lo que sigue al último ','. – sfussenegger
Una excepción será lanzada por 'substring' si' lastIndexOf' devuelve '-1'. – ADTC
Puede utilizar expresiones regulares:
String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");
replaceAll(...)
coincidirá con cadena de cadena con la expresión dada regular (parámetro 1) (en este caso vamos a igualar el último carácter si se trata de una coma). Reemplácelo con un reemplazo (parámetro 2) (en este caso es ')
').
Plus! Si desea asegurarse de que se resuelvan los espacios de cola y las pestañas, simplemente puede cambiar la expresión regular a ',\[ \t\]*$
'. NOTA: '\[
' y '\]
' no tienen barra invertida (no sé cómo escapársela correctamente).
Espero que esto ayude.
+1, ¡esta es una forma más elegante! – dragon66
Si usa replaceAll (", $", ")") como replaceAll ("[,] * $", ")"), funcionará aunque tenga varias comas. Por ej. "(nombre, fecha ,,," -> "(nombre, fecha)". Creo que esto es más flexible. – csonuryilmaz
La manera más fácil de leer ... que se puede utilizar para aprender acerca de cuerda y sus funciones
String myString = "Insert into dual (name,date,";
String newString = "";
int length = myString.length();
String lastChar = myString.substring(length-1);
if (lastChar.contains(",")) {
newString = myString.substring(0,length-1) + ")";
}
System.out.println(newString);
Más legible que qué? – sfussenegger
Este es un método personalizado para reemplazar sólo la última subcadena de una cadena dada. Sería útil para Usted:
private String replaceLast(String string, String from, String to) {
int lastIndex = string.lastIndexOf(from);
if (lastIndex < 0) return string;
String tail = string.substring(lastIndex).replaceFirst(from, to);
return string.substring(0, lastIndex) + tail;
}
genial. Me funcionó. Solo necesitaba adaptarme a mis requisitos comerciales. –
probar este regex (^.+)b(.+$)
Ejemplo (Reemplazar el último carácter b)
System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));
cuál está para arriba con la molestia si sólo se puede hacer esto
word = (String) word.subSequence(0, word.length() -1);
return s nueva cadena sin la última parte de una cadena.
para reemplazar un último carácter de la cadena por )
str = str.substring(0, str.length()-1)+")";
Asegúrese de que la cadena no está vacía o nula.
¿Ha considerado reescribir su ciclo para que aparezca la cantidad correcta de comas? He visto una pregunta de Stackoverflow para que ese lazo sea lo más eficiente posible. –
Simplemente use: "Insertar en dual (nombre, fecha,". ReplaceAll (", (?!. *,)", ")"); – dragon66