@ Michael: Houve um erro do compilador. Como você pretende usar o ToCharArray, se não dessa maneira?
Craig Johnston
3
Para o registro, ToCharArrayé um método , você deve executá-lo primeiro, por exemplo char[] chars = str.ToCharArray();, e depois usá-lo char first = chars[0];. Você também pode matá-lo str.ToCharArray()[0];. De qualquer forma, verifique se a sequência não é nula e tem pelo menos um caractere - você pode fazer isso usando if(!String.IsNullOrEmpty(str)).
Kobi
1
Craig .. o uso do ToCharArray está errado. Veja minha resposta.
Nayan
4
Você quer o primeiro charou o primeiro caractere ? Se você tentar isso e parece funcionar, tente novamente com 𣊾or 𣇞, que ambos falharam em um programa que eu estava usando e que foi escrito em C # com esse bug exato.
hippietrail
Respostas:
382
Apenas MyString[0]. Isso usa o indexador String.Chars .
A diferença entre essa resposta e a escolhida é que essa solução retorna uma string e a outra retorna um caractere.
Loïc Lopes
char obtém apenas um caractere, mas minha solução pode resultar em mais de um, se você desejar.
Sanjay Kumaar
1
Foi apenas uma precisão, pois o tipo pode ser importante de acordo com o que você deseja fazer com ele.
Loïc Lopes
18
A diferença entre MyString[0]e MyString.ToCharArray()[0]é que o primeiro trata a string como uma matriz somente leitura, enquanto ToCharArray()cria uma nova matriz. O primeiro será mais rápido (junto com o mais fácil) para praticamente qualquer coisa em que funcione, mas ToCharArraypode ser necessário se você tiver um método que precise aceitar uma matriz ou se desejar alterar a matriz.
Se a string não for nula e não vazia, você poderá:
Correto é MyString [posição do caractere]. No seu caso, MyString [0], 0 é o PRIMEIRO caractere de qualquer sequência.
Um valor de caractere é designado com '(aspas simples), assim como esse valor de x é escrito como' x '.
Um valor de sequência é designado com "(aspas duplas), como esse valor de sequência x é escrito como" x ".
Portanto, o método Substring () também não retorna um caractere, o método Substring () retorna uma string !!!
Uma string é uma matriz de caracteres e o último caractere deve ser '\ 0' (nulo). Essa é a diferença entre a matriz de caracteres e a string (que é uma matriz de caracteres com o último caractere como "marcador de fim de string" '\ 0' null.
E também observe que 'x' NÃO É IGUAL a "x". Porque "x" é realmente 'x' + '\ 0'.
ToCharArray
é um método , você deve executá-lo primeiro, por exemplochar[] chars = str.ToCharArray();
, e depois usá-lochar first = chars[0];
. Você também pode matá-lostr.ToCharArray()[0];
. De qualquer forma, verifique se a sequência não é nula e tem pelo menos um caractere - você pode fazer isso usandoif(!String.IsNullOrEmpty(str))
.char
ou o primeiro caractere ? Se você tentar isso e parece funcionar, tente novamente com𣊾
or𣇞
, que ambos falharam em um programa que eu estava usando e que foi escrito em C # com esse bug exato.Respostas:
Apenas
MyString[0]
. Isso usa o indexador String.Chars .fonte
Mystring[0]
deve ser suficientefonte
Tente isso,
string s1="good"; string s=s1.Substring(0,1);
fonte
A diferença entre
MyString[0]
eMyString.ToCharArray()[0]
é que o primeiro trata a string como uma matriz somente leitura, enquantoToCharArray()
cria uma nova matriz. O primeiro será mais rápido (junto com o mais fácil) para praticamente qualquer coisa em que funcione, masToCharArray
pode ser necessário se você tiver um método que precise aceitar uma matriz ou se desejar alterar a matriz.Se a string não for nula e não vazia, você poderá:
que retorna um
char?
caractere nulo ou o primeiro na sequência, conforme apropriado.fonte
char?
como uma maneira de incluir a possibilidade "não há primeiro personagem".Você pode usar o LINQ
Será igual a
'\0'
se a string estiver vazia.fonte
Ou você pode fazer isso:
fonte
Apenas outra abordagem:
fonte
Eu acho que você está procurando por isso
MyString.ToCharArray()[0]
:)
Mas você pode usar
MyString[0]
também.fonte
MyString.Remove (1, 2); também funciona
fonte
O exemplo a seguir para obter o primeiro caractere de uma string pode ajudar alguém
fonte
A resposta à sua pergunta é NÃO.
Correto é MyString [posição do caractere]. No seu caso, MyString [0], 0 é o PRIMEIRO caractere de qualquer sequência.
Um valor de caractere é designado com '(aspas simples), assim como esse valor de x é escrito como' x '.
Um valor de sequência é designado com "(aspas duplas), como esse valor de sequência x é escrito como" x ".
Portanto, o método Substring () também não retorna um caractere, o método Substring () retorna uma string !!!
Uma string é uma matriz de caracteres e o último caractere deve ser '\ 0' (nulo). Essa é a diferença entre a matriz de caracteres e a string (que é uma matriz de caracteres com o último caractere como "marcador de fim de string" '\ 0' null.
E também observe que 'x' NÃO É IGUAL a "x". Porque "x" é realmente 'x' + '\ 0'.
fonte
No C # 8, você pode usar intervalos.
Adicione um
?
depoismyString
para lidar comnull
seqüências de caracteres.fonte
obter um caractere de uma string pode depender do encconding (o padrão da string é UTF-16)
https://stackoverflow.com/a/32141891
fonte