¿Hay alguna razón para esto? Le pregunto porque si necesita usar muchos caracteres vacíos, entonces se encuentra en la misma situación que cuando usa muchas cadenas vacías.
Editar: El motivo de este uso fue este:
myString.Replace ('c', '')
Entonces, elimine todas las instancias de 'c's de myString.
RemoveAll(this string s, params char[] toRemove)
? La intención se comunicará claramente y no se arriesgará a escribir mal.""
crea un objeto : No, no lo hace.Respuestas:
No hay tal cosa como un carbón vacío. Lo más cercano que puede obtener es
'\0'
el carácter "nulo" de Unicode. Dado que puede incrustar eso dentro de los literales de cadena o expresarlo por sí solo muy fácilmente, ¿por qué querría un campo separado para él? Igualmente, los argumentos de " es fácil confundir""
y" "
" no se aplican'\0'
.Si pudiera dar un ejemplo de dónde desea usarlo y por qué cree que sería mejor, eso podría ayudar ...
fuente
Int32.Zero
, ¿lo usarías en lugar del 0 literal? Si no, ¿cuál es la diferencia aquí?Un char, a diferencia de una cadena, es algo discreto con un tamaño fijo. Una cadena es realmente un contenedor de caracteres.
Entonces, Char.Empty realmente no tiene sentido en ese contexto. Si tienes un carbón, no está vacío.
fuente
No existe un personaje vacío. Siempre contiene algo . Incluso '\ 0' es un personaje.
fuente
Utilice el
Char.MinValue
que funciona igual que '\ 0'. Pero ten cuidado, no es lo mismo queString.Empty
.fuente
Podrías usar caracteres anulables .
fuente
Si no necesita la cadena completa, puede aprovechar la ejecución retrasada:
Incluso puedes combinar varios personajes ...
... y solo se evaluarán los primeros 7 caracteres :)
EDITAR: o, mejor aún:
y su uso:
fuente
OK, esto no es particularmente elegante para eliminar letras, ya que el método .Replace tiene una sobrecarga que toma parámetros de cadena. Pero esto funciona para eliminar retornos de carro, saltos de línea, pestañas, etc. Este ejemplo elimina los caracteres de tabulación:
fuente
la misma razón por la que no hay un
int.Empty
. Los contenedores pueden estar vacíos. Los valores escalares no pueden ser. Si quiere decir 0 (que no está vacío), use'\0'
. Si quieres decirnull
, entonces usanull
:)fuente
Un carácter es un tipo de valor, por lo que su valor no puede ser nulo. (A menos que esté envuelto en un contenedor Nullable).
Como no puede ser nulo, contiene un código numérico y cada código se asigna a algún carácter.
fuente
No es una respuesta a su pregunta, pero para denotar un valor predeterminado
char
, puede usar soloque es lo mismo
char.MinValue
que a su vez es lo mismo que\0
. Sin embargo, no se debe usar para algo como una cadena vacía.fuente
No responde su primera pregunta, pero para el problema específico que tuvo, puede usar cadenas en lugar de caracteres, ¿verdad ?:
¿Hay alguna razón por la que no quieras hacer eso?
fuente
También puede reconstruir su cadena carácter por carácter, excluyendo los caracteres de los que desea deshacerse.
Aquí hay un método de extensión para hacer esto:
No es elegante ni elegante, pero funciona bien.
Usar así:
fuente
StringBuilder
pararesult
. ¿Por qué no envolverreturn s.Replace(charsToRemove,"");
?Si desea eliminar caracteres que satisfacen una condición específica, puede usar esto:
(Esto dejará solo los caracteres en mayúscula en la cadena).
En otras palabras, puede "usar" la cadena como un
IEnumerable<char>
, hacer cambios en ella y luego convertirla nuevamente a una cadena como se muestra arriba.De nuevo, esto permite no sólo eliminar un caracter específico debido a la expresión lambda, aunque puede hacerlo si cambia la expresión lambda como esto:
c => c != 't'
.fuente
¿Qué tal BOM , el personaje mágico que Microsoft agrega al inicio de los archivos (al menos XML)?
fuente
myString.Replace ('c', '')
podría lograrse mediantemyString.Replace ('c', UTF_BOM)
. Entonces diría que la respuesta es "¿cómo no se trata de ...".si desea eliminar el carácter vacío en la cadena, lo siguiente funcionará, simplemente conviértalo a cualquier representación de tipo de datos que desee. Gracias,
fuente
En términos de lenguaje C #, lo siguiente puede no tener mucho sentido. Y esta no es una respuesta directa a la pregunta. Pero fowlloing es lo que hice en uno de mis escenarios comerciales
El
null
ywhite space
tenía diferentes flujos de negocios en mi proyecto. Al insertar en la base de datos, necesito insertarempty string
en la base de datos si es un espacio en blanco.fuente
Sé que este es bastante viejo, pero recientemente encontré un problema con tener que hacer múltiples reemplazos para que un nombre de archivo sea seguro. Primero, en la última cadena .NET. La función de reemplazo nulo es el equivalente al carácter vacío. Dicho esto, lo que falta en .Net es un simple reemplazo de todo lo que reemplazará cualquier carácter en una matriz con el carácter deseado. No dude en consultar el código a continuación (se ejecuta en LinqPad para realizar pruebas).
fuente
utilizar
fuente
La forma más fácil de eliminar un personaje de una cadena es recortarlo
cl = cl.Trim(' ');
Elimina todos los espacios en una cadena
fuente