@ Michael: Hubo un error del compilador. ¿Cómo se supone que debes usar ToCharArray si no es así?
Craig Johnston
3
Para el registro, ToCharArrayes un método , primero debe ejecutarlo, por ejemplo char[] chars = str.ToCharArray();, y luego usarlo char first = chars[0];. También puedes destriparlo str.ToCharArray()[0];. De cualquier manera, asegúrese de verificar que la cadena no sea nula y que tenga al menos un carácter; puede hacerlo usando if(!String.IsNullOrEmpty(str)).
Kobi
1
Craig ... el uso de ToCharArray está mal. Mira mi respuesta.
Nayan
44
¿Quieres el primer charo el primer personaje ? Si intenta esto y parece funcionar, intente nuevamente con 𣊾o 𣇞, que ambos fallaron en un programa que estaba usando que estaba escrito en C # con este error exacto.
hippietrail
Respuestas:
382
Justo MyString[0]. Esto usa el indexador String.Chars .
La diferencia entre esta respuesta y la elegida es que esta solución devuelve una cadena y la otra devuelve un carácter.
Loïc Lopes
Los caracteres solo tienen un carácter, pero mi solución puede resultar en más de uno si lo desea.
Sanjay Kumaar
1
Fue solo una precisión ya que el tipo puede ser importante según lo que quieras hacer con él.
Loïc Lopes
18
La diferencia entre MyString[0]y MyString.ToCharArray()[0]es que el primero trata la cadena como una matriz de solo lectura, mientras ToCharArray()crea una nueva matriz. El primero será más rápido (junto con más fácil) para casi cualquier cosa donde funcione, pero ToCharArraypuede ser necesario si tiene un método que necesita aceptar una matriz, o si desea cambiar la matriz.
Si se sabe que la cadena no es nula y no está vacía, puede hacer:
La correcta es MyString [posición del personaje]. Para su caso MyString [0], 0 es el PRIMER carácter de cualquier cadena.
Un valor de carácter se designa con '(comilla simple), como este valor de carácter x se escribe como' x '.
Un valor de cadena se designa con "(comillas dobles), como este valor de cadena x se escribe como" x ".
¡Entonces el método Substring () tampoco devuelve un carácter, el método Substring () devuelve una cadena!
Una cadena es una matriz de caracteres, y el último carácter debe ser un carácter '\ 0' (nulo). Esa es la diferencia entre la matriz de caracteres y la cadena (que es una matriz de caracteres con el último carácter como "final del marcador de cadena" '\ 0' nulo.
Y también observe que 'x' NO ES IGUAL a "x". Porque "x" es en realidad 'x' + '\ 0'.
ToCharArray
es un método , primero debe ejecutarlo, por ejemplochar[] chars = str.ToCharArray();
, y luego usarlochar first = chars[0];
. También puedes destriparlostr.ToCharArray()[0];
. De cualquier manera, asegúrese de verificar que la cadena no sea nula y que tenga al menos un carácter; puede hacerlo usandoif(!String.IsNullOrEmpty(str))
.char
o el primer personaje ? Si intenta esto y parece funcionar, intente nuevamente con𣊾
o𣇞
, que ambos fallaron en un programa que estaba usando que estaba escrito en C # con este error exacto.Respuestas:
Justo
MyString[0]
. Esto usa el indexador String.Chars .fuente
Mystring[0]
debería ser suficientefuente
Prueba esto,
string s1="good"; string s=s1.Substring(0,1);
fuente
La diferencia entre
MyString[0]
yMyString.ToCharArray()[0]
es que el primero trata la cadena como una matriz de solo lectura, mientrasToCharArray()
crea una nueva matriz. El primero será más rápido (junto con más fácil) para casi cualquier cosa donde funcione, peroToCharArray
puede ser necesario si tiene un método que necesita aceptar una matriz, o si desea cambiar la matriz.Si se sabe que la cadena no es nula y no está vacía, puede hacer:
que devuelve un
char?
nulo o el primer carácter de la cadena, según corresponda.fuente
char?
como una forma de incluir la posibilidad "no hay un primer personaje".Puedes usar LINQ
Será igual a
'\0'
si la cadena está vacía.fuente
O puedes hacer esto:
fuente
Solo otro enfoque:
fuente
Creo que estas buscando esto
MyString.ToCharArray()[0]
:)
Pero también puedes usarlo
MyString[0]
.fuente
MyString.Remove (1, 2); también funciona
fuente
El siguiente ejemplo para obtener el primer carácter de una cadena podría ayudar a alguien
fuente
La respuesta a su pregunta es NO.
La correcta es MyString [posición del personaje]. Para su caso MyString [0], 0 es el PRIMER carácter de cualquier cadena.
Un valor de carácter se designa con '(comilla simple), como este valor de carácter x se escribe como' x '.
Un valor de cadena se designa con "(comillas dobles), como este valor de cadena x se escribe como" x ".
¡Entonces el método Substring () tampoco devuelve un carácter, el método Substring () devuelve una cadena!
Una cadena es una matriz de caracteres, y el último carácter debe ser un carácter '\ 0' (nulo). Esa es la diferencia entre la matriz de caracteres y la cadena (que es una matriz de caracteres con el último carácter como "final del marcador de cadena" '\ 0' nulo.
Y también observe que 'x' NO ES IGUAL a "x". Porque "x" es en realidad 'x' + '\ 0'.
fuente
En C # 8 puedes usar rangos.
Agregue un
?
aftermyString
para manejarnull
cadenas.fuente
obtener un char de una cadena puede depender de la búsqueda (la cadena predeterminada es UTF-16)
https://stackoverflow.com/a/32141891
fuente