Recortar el último carácter de una cadena

Tengo una cadena de decir

"Hello! world!" 

Quiero hacer un recorte o un quitar para sacar el! fuera del mundo pero no fuera Hola.

 "Hello! world!".TrimEnd('!'); 

Lee mas

EDITAR:

Lo que noté en este tipo de preguntas es que todos sugieren eliminar el último carácter de una cadena dada. Pero esto no cumple con la definición del método Trim.

Recortar: elimina todas las apariciones de caracteres de espacios en blanco desde el principio y el final de esta instancia.

MSDN-Trim

Según esta definición, eliminar solo el último carácter de la cadena es una mala solución.

Entonces, si queremos “Recortar el último carácter de la cadena”, deberíamos hacer algo como esto

Ejemplo como método de extensión:

 public static class MyExtensions { public static string TrimLastCharacter(this String str) { if(String.IsNullOrEmpty(str)){ return str; } else { return str.TrimEnd(str[str.Length - 1]); } } } 

Tenga en cuenta si desea eliminar todos los caracteres del mismo valor, es decir, (!!!!) el método anterior elimina todas las existencias de ‘!’ desde el final de la cadena, pero si quiere eliminar solo el último carácter, debe usar esto:

 else { return str.Remove(str.Length - 1); } 
 String withoutLast = yourString.Substring(0,(yourString.Length - 1)); 
 if (yourString.Length > 1) withoutLast = yourString.Substring(0, yourString.Length - 1); 

o

 if (yourString.Length > 1) withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1); 

… en caso de que desee eliminar un carácter que no sea de espacio en blanco desde el final.

 string helloOriginal = "Hello! World!"; string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!')); 
  string s1 = "Hello! world!"; string s2 = s1.Trim('!'); 

El otro ejemplo de recorte del último carácter de una cadena:

 string outputText = inputText.Remove(inputText.Length - 1, 1); 

Puede ponerlo en un método de extensión y evitar que tenga una cadena nula, etc.

 string s1 = "Hello! world!" string s2 = s1.Substring(0, s1.Length - 1); Console.WriteLine(s1); Console.WriteLine(s2); 

también puedes usar esto:

 public static class Extensions { public static string RemovePrefix(this string o, string prefix) { if (prefix == null) return o; return !o.StartsWith(prefix) ? o : o.Remove(0, prefix.Length); } public static string RemoveSuffix(this string o, string suffix) { if(suffix == null) return o; return !o.EndsWith(suffix) ? o : o.Remove(o.Length - suffix.Length, suffix.Length); } } 

Prueba esto:

 return( (str).Remove(str.Length-1) ); 

Tomé el camino de escribir una extensión usando TrimEnd solo porque ya lo estaba usando en línea y estaba contento con él … es decir:

 static class Extensions { public static string RemoveLastChars(this String text, string suffix) { char[] trailingChars = suffix.ToCharArray(); if (suffix == null) return text; return text.TrimEnd(trailingChars); } } 

Asegúrese de incluir el espacio de nombres en sus clases usando la clase estática; P y el uso es:

 string _ManagedLocationsOLAP = string.Empty; _ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(","); 

Muy fácil y simple:

str = str.Remove (str.Length – 1);

Si quieres eliminar el ‘!’ personaje de una expresión específica (“mundo” en su caso), entonces puede usar esta expresión regular

 string input = "Hello! world!"; string output = Regex.Replace(input, "(world)!", "$1", RegexOptions.Multiline | RegexOptions.Singleline); // result: "Hello! world" 

el caracter especial de $ 1 contiene todas las expresiones “mundiales” coincidentes, y se usa para reemplazar el “mundo” original. expresión