La pregunta anterior es acerca de char** sy preguntas sobre ** caracteres s. No són la misma cosa. 𣊾y 𣇞son dos caracteres que necesitaba usar ayer mismo que fallaron en el software escrito en C # que estaba usando porque el programador no sabía la diferencia entre a chary un carácter. ¡No caigas en esta trampa!
string val = cadena nueva (yourStringVariable.Take (6) .ToArray ()); pero Substring producirá un error si la longitud de yourStringVariable es menor a 5
Moji
1
IsNullOrWhiteSpaceEstá mal aquí. Considere una cadena con 10 espacios en blanco: su código devolverá los 10. Use en su IsNullOrEmptylugar. (No es bueno combinarlo IsNullOrWhiteSpacecon ninguna otra prueba; en su lugar, pruebe nulo + vacío, luego, Trimsi ese es el comportamiento especificado, haga las pruebas / operaciones necesarias.)
ToolmakerSteve
1
Puede guardar una llamada a ToArray () utilizando String.Concat () así: string firstFivChar = String.Concat (yourStringVariable.Take (5));
La subcadena comienza en una posición de carácter especificada y tiene una longitud especificada. Este método no modifica el valor de la instancia actual. En su lugar, devuelve una nueva cadena con caracteres de longitud que comienzan desde la posición startIndex en la cadena actual,
MSDN
¿Qué sucede si la cadena de origen tiene menos de cinco caracteres? Obtendrá una excepción al usar el método anterior. Podemos poner la condición para verificar si el número de caracteres en la cadena es más de 5 y luego obtener los primeros cinco a través de Subcadena. Tenga en cuenta que he asignado la cadena de origen a la variable firstFiveChar. FirstFiveChar no cambia si los caracteres son inferiores a 5, por lo que no se requiere parte.
Nadie mencionó cómo hacer las comprobaciones adecuadas cuando se usa Substring(), por lo que quería contribuir al respecto.
Si no desea usar Linqe ir con Substring(), debe asegurarse de que su cadena sea más grande que el segundo parámetro (longitud) de la Substring()función.
Digamos que necesitas los primeros 5 caracteres. Debería obtenerlos con la verificación adecuada, así:
string title ="love"// 15 charactersvar firstFiveChars = title.Length<=5? title : title.Substring(0,5);// firstFiveChars: "love" (4 characters)
Sin esta verificación, la Substring()función generaría una excepción porque iteraría a través de letras que no están allí.
Esto me ayudó mucho, pero ¿podría explicar qué está haciendo exactamente en esa línea?
jimbob
Verificaría algunos ejemplos sobre la subcadena. Toma parámetros para los índices. El índice inicial es 0. Si escribe algo más grande (o más pequeño, de hecho) que el último índice de cualquier matriz, obtendrá una excepción fuera del índice. Esa verificación, en el ejemplo, es para evitar esa excepción.
ilter
Jajajaja :) Fue una pregunta que respondí. ¿Debería haber dejado esa pregunta sin respuesta? :)
ilter
18
El problema .Substring(,)es que debe asegurarse de que la cadena dada tenga al menos la longitud de la cantidad de caracteres solicitada; de lo contrario, se ArgumentOutOfRangeExceptiongenerará un .
Solución 1 (usando 'Subcadena'):
var firstFive = stringValue !=null?
stringValue.Substring(0, stringValue.Length>=5?5: stringValue.Length):null;
El inconveniente de usar .Substring(es que necesitará verificar la longitud de la cadena dada.
Solución 2 (usando 'Take'):
var firstFive = stringValue !=null?string.Join("", stringValue.Take(5)):null;
El uso de 'Tomar' evitará que deba verificar la longitud de la cadena dada.
Use la función PadRight para evitar que la cadena sea demasiado corta, tome lo que necesita y luego recorte los espacios desde el final, todo en una sola declaración.
Esta es la mejor solución hasta ahora. Usar solo la subcadena puede causar un error cuando la longitud de la cadena es menor que la longitud de la subcadena.
Asiri Dissanayaka
La mejor alternativa para la función IZQUIERDA que utilizamos en SQL Server
vibs2006
11
No sé por qué alguien mencionó esto. Pero es la forma más corta y sencilla de lograr esto.
string str = yourString.Remove(n);
n - número de caracteres que necesitas
Ejemplo
var zz ="7814148471";Console.WriteLine(zz.Remove(5));//result - 78141
Esto es internamente lo mismo que "this.Substring (0, 5)", por lo que debe asegurarse de que la cadena tenga la longitud adecuada.
PersyJack
En el caso de que desee los primeros n caracteres, esto solo funciona si conoce la longitud de la cadena. Si la longitud puede cambiar, esto no siempre funcionará. Sé que eso es probablemente obvio para la mayoría, pero solo lo menciono para cualquiera que pase ...
user1289451
10
Agregue cinco caracteres de espacio en blanco, luego corte los primeros cinco y recorte el resultado. El número de espacios que agregue debe coincidir con el número que está cortando. Asegúrese de incluir el paréntesis antes .Substring(0,X)o no agregará nada.
¡Maldita sea, iba a publicar eso! Votado (es 2019, ¿por qué no puede haber un método en cadena que haga lo que Mid $ hizo en 1985? Para aquellos que dicen 'no deberías hacer eso' OK, ven a escribir mi código para mí ... tendrás que hazlo ...)
A continuación se muestra un método de extensión que comprueba si una cadena es más grande de lo que se necesitaba y acorta la cadena a la cantidad máxima definida de caracteres y agrega '...'.
publicstaticclassStringExtensions{publicstaticstringEllipsis(thisstring s,int charsToDisplay){if(!string.IsNullOrWhiteSpace(s))return s.Length<= charsToDisplay ? s :newstring(s.Take(charsToDisplay).ToArray())+"...";returnString.Empty;}}
char
** sy preguntas sobre ** caracteres s. No són la misma cosa.𣊾
y𣇞
son dos caracteres que necesitaba usar ayer mismo que fallaron en el software escrito en C # que estaba usando porque el programador no sabía la diferencia entre achar
y un carácter. ¡No caigas en esta trampa!Respuestas:
Puede usar Enumerable. Tome como:
O puede usar String.Substring .
Recuerde que
String.Substring
podría generar una excepción en caso de que la longitud de la cadena sea menor que los caracteres requeridos.Si desea recuperar el resultado en cadena, puede usar:
Usando String Constructor y LINQ's
Take
La ventaja con el enfoque no es verificar la longitud de antemano.
String.Substring
con la comprobación de erroresme gusta:
fuente
IsNullOrWhiteSpace
Está mal aquí. Considere una cadena con 10 espacios en blanco: su código devolverá los 10. Use en suIsNullOrEmpty
lugar. (No es bueno combinarloIsNullOrWhiteSpace
con ninguna otra prueba; en su lugar, pruebe nulo + vacío, luego,Trim
si ese es el comportamiento especificado, haga las pruebas / operaciones necesarias.)Por favor, inténtalo:
Compruebe C # Substring , String.Substring Method
fuente
Puede usar Subcadena (int startIndex, int length)
¿Qué sucede si la cadena de origen tiene menos de cinco caracteres? Obtendrá una excepción al usar el método anterior. Podemos poner la condición para verificar si el número de caracteres en la cadena es más de 5 y luego obtener los primeros cinco a través de Subcadena. Tenga en cuenta que he asignado la cadena de origen a la variable firstFiveChar. FirstFiveChar no cambia si los caracteres son inferiores a 5, por lo que no se requiere parte.
fuente
Nadie mencionó cómo hacer las comprobaciones adecuadas cuando se usa
Substring()
, por lo que quería contribuir al respecto.Si no desea usar
Linq
e ir conSubstring()
, debe asegurarse de que su cadena sea más grande que el segundo parámetro (longitud) de laSubstring()
función.Digamos que necesitas los primeros 5 caracteres. Debería obtenerlos con la verificación adecuada, así:
Sin esta verificación, la
Substring()
función generaría una excepción porque iteraría a través de letras que no están allí.Creo que tienes la idea ...
fuente
El problema
.Substring(,)
es que debe asegurarse de que la cadena dada tenga al menos la longitud de la cantidad de caracteres solicitada; de lo contrario, seArgumentOutOfRangeException
generará un .Solución 1 (usando 'Subcadena'):
El inconveniente de usar
.Substring(
es que necesitará verificar la longitud de la cadena dada.Solución 2 (usando 'Take'):
El uso de 'Tomar' evitará que deba verificar la longitud de la cadena dada.
fuente
Use la función PadRight para evitar que la cadena sea demasiado corta, tome lo que necesita y luego recorte los espacios desde el final, todo en una sola declaración.
fuente
No sé por qué alguien mencionó esto. Pero es la forma más corta y sencilla de lograr esto.
n
- número de caracteres que necesitasEjemplo
fuente
Agregue cinco caracteres de espacio en blanco, luego corte los primeros cinco y recorte el resultado. El número de espacios que agregue debe coincidir con el número que está cortando. Asegúrese de incluir el paréntesis antes
.Substring(0,X)
o no agregará nada.Con esta técnica no tendrá que preocuparse por lo
ArgumentOutOfRangeException
mencionado en otras respuestas.fuente
fuente
Solo un aviso es una nueva forma de hacer esto en C # 8.0: operadores de rango
Documentos de Microsoft
O como me gusta llamarlos, rebanadas de pandas.
Vieja forma:
Nueva manera:
Lo que a primera vista parece una muy mala compensación de cierta legibilidad para un código más corto, pero la nueva característica le brinda
cosas geniales como esta:
var slice1 = list [2 .. ^ 3]; // list [Range.Create (2, Index.CreateFromEnd (3))]
var slice2 = list [.. ^ 3]; // list [Range.ToEnd (Index.CreateFromEnd (3))]
var slice3 = list [2 ..]; // lista [Range.FromStart (2)]
var slice4 = list [..]; // lista [Range.All]
fuente
Para obtener el primer n número de caracteres de una cadena en C #
fuente
A continuación se muestra un método de extensión que comprueba si una cadena es más grande de lo que se necesitaba y acorta la cadena a la cantidad máxima definida de caracteres y agrega '...'.
fuente
En C # 8.0 puede obtener los primeros cinco caracteres de una cadena de esta manera
Aquí hay más información sobre índices y rangos
fuente
Yo suelo:
o alternativa si desea verificar el espacio en blanco también (en lugar de solo nulo):
fuente
O puede usar String.ToCharArray () .
Toma
int startindex
yint length
como parámetros y devuelve unchar[]
Aún deberá asegurarse de que la cadena tenga la longitud adecuada, de lo contrario arrojará un
ArgumentOutOfRangeException
fuente
Intente amablemente este código cuando str sea menor que 5.
fuente
Si solo queremos los primeros 5 caracteres de cualquier campo, esto se puede lograr con el atributo izquierdo
fuente
Prueba el siguiente código
fuente
He probado las respuestas anteriores y la mejor creo que es esta
En esto pude obtener la primera letra de la cadena
fuente