Eu sei como calcular o índice de um determinado caractere ou número em uma string, mas existe algum método predefinido que eu possa usar para me fornecer o caractere na n - ésima posição? Portanto, na string "foo", se eu pedisse o caractere com índice 0, ele retornaria "f".
Nota - na pergunta acima, por "caractere" não quero dizer o tipo de dado char, mas uma letra ou número em uma string. O importante aqui é que não recebo um caractere quando o método é chamado, mas uma string (de comprimento 1). E eu sei sobre o método substring (), mas queria saber se havia uma maneira mais clara.
char
valor? E ele sabe fazer,substring()
mas só quer um jeito "mais puro". Para sua informação, posso dizer quesubstring()
é o caminho mais limpo.Character.toString
atende a todos os requisitos necessários e não é nada complicado.substring()
diretamente.endIndex
(segundo parâmetro) deString.substring(int, int)
é um índice exclusivo e não emitirá uma exceçãoindex + 1
enquantoindex < length()
- o que é verdade mesmo para o último caractere na string.Respostas:
O método que você está procurando é
charAt
. Aqui está um exemplo:Para obter mais informações, consulte a documentação
String.charAt
do Java em . Se você quiser outro tutorial simples, este ou este .Se você não deseja o resultado como um
char
tipo de dados, mas como uma sequência, use oCharacter.toString
método:Se você quiser obter mais informações sobre a
Character
classe e otoString
método, retirei minhas informações da documentação em Character.toString .fonte
Você quer
.charAt()
Aqui está um tutorial
retorna
s
Se você está empenhado em ter uma string, existem duas maneiras de converter um caractere em uma string:
Ou
Ou até
Por exemplo.
fonte
Character.toString
?String mychar = String.valueOf("mystring".charAt(2));
String mychar = ""+"mystring".charAt(2);
porque é a mais concisa. Outros diferem em sua opinião sobre isso.Nenhuma das respostas propostas funciona para pares substitutos usados para codificar caracteres fora do Plano Multiligual Básico Unicode .
Aqui está um exemplo usando três técnicas diferentes para iterar sobre os "caracteres" de uma string (incluindo a API de fluxo Java 8). Observe que este exemplo inclui caracteres do plano multilíngue suplementar Unicode (SMP). Você precisa de uma fonte adequada para exibir este exemplo e o resultado corretamente.
Iteração de caracteres
A primeira solução é um loop simples sobre toda
char
a cadeia:Iteração de pontos de código
A segunda solução também usa um loop explícito, mas acessando pontos de código individuais com codePointAt e incrementando o índice de loop de acordo com charCount :
Iterar sobre pontos de código usando a API de Stream
A terceira solução é basicamente a mesma que a segunda, mas usando a API Java 8 Stream :
Resultados
Ao executar esse programa de teste, você obtém:
Como você pode ver (se você conseguir exibir hieróglifos corretamente), a primeira solução não manipula corretamente caracteres fora do Unicode BMP. Por outro lado, as outras duas soluções lidam bem com pares substitutos.
fonte
Você está bastante atolado
substring()
, considerando seus requisitos. A maneira padrão seriacharAt()
, mas você disse que não aceitará um tipo de dados char.fonte
toString()
que não funcionará evalueOf()
é apenas para números (acho que posso estar errado), então como faço para converter um char em uma string?char
"Character.toString
deve funcionar (é um método estático daCharacter
classe.Você pode usar o
String.charAt(int index)
resultado do método como o parâmetro para String.valueOf (char c) .fonte
Uma abordagem híbrida combinada
charAt
com a sua exigência de não receber char pode serMas isso não é realmente "mais limpo" do que
substring()
para ser honesto.fonte
É tão simples quanto:
fonte
Aqui está o código correto. Se você estiver usando zybooks, isso responderá a todos os problemas.
fonte
se alguém está lutando com o kotlin, o código é:
isso retornará o caractere na posição 1; nesse caso, lembre-se, o índice começa na posição 0; portanto, nesta amostra: kotlin seria k = posição 0, o = posição 1, t = posição 2, l = posição 3, i = posição 4 en = posição 5
fonte
Como isso:
fonte
String
comprimento 1 é desejado, não umchar
.charAt()
como uma solução possível. O que essa resposta adiciona?charAt()
usa índices baseados em 1, tendo o único caractere diferentea
na terceira posição. Se isso fosse verdade, seria melhor você dizer ou explicar isso do que sugerir. Na realidade, isso não é verdade:charAt()
usa índices baseados em 0, assims
será'h'
.