Como obter o primeiro caractere da string?

595

Eu tenho uma string e preciso obter o primeiro caractere.

var x = 'somestring';
alert(x[0]); //in ie7 returns undefined

Como posso corrigir meu código?

Simon
fonte
5
apenas tenha cuidado - você pode não ter um personagem para extrair!
precisa saber é o seguinte

Respostas:

1046

O que você quer é charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'
Daniel Vandersluis
fonte
11
Trabalhou no IE7, Chrome, Firefox.
Yuriy Faktorovich
78
Só queria deixar o documento MDN aqui. Eu geralmente prefiro isso ao w3schools.
Danwit
12
x.charAt()também retornará o primeiro caractere como se nenhum índice fosse passado para esse método, ele assumirá o valor para 0.
Mohammad Usman
1
@MohammadUsman Embora o que você diz seja verdade, infelizmente o charAt () sem nenhum parâmetro realmente roda cerca de 10 vezes mais lento que o chartAt (0) no Firefox a partir do Firefox 71. Veja você mesmo aqui: jsperf.com/testing-the-first-character- in-a-string / 1
Stephen M Irving
Essa solução é boa para o ASCII, mas será interrompida de todas as formas assim que você lida com mais do que isso. "👍".charAt(0)retorna "\ud83d", "café".charAt(3)devolve ee retira o sotaque, etc. stackoverflow.com/questions/38345372/… tem algumas informações e uma boa alternativa (use uma biblioteca)
Clément
149

Em JavaScript, você pode fazer isso:

const x = 'some string';
console.log(x.substring(0, 1));

Dustin Laine
fonte
5
se preferir usar funções de sub-string, o x.slice(0,1)é mais curto. E para obter o último caractere, basta usar:x.slice(-1)
S.Serpooshan
60

Você pode usar qualquer um desses.

Há uma pequena diferença entre todos esses itens. Portanto, tenha cuidado ao usá-lo na declaração condicional.

var string = "hello world";
console.log(string.slice(0,1));     //o/p:- h
console.log(string.charAt(0));      //o/p:- h
console.log(string.substring(0,1)); //o/p:- h
console.log(string.substr(0,1));    //o/p:- h
console.log(string[0]);             //o/p:- h


var string = "";
console.log(string.slice(0,1));     //o/p:- (an empty string)
console.log(string.charAt(0));      //o/p:- (an empty string)
console.log(string.substring(0,1)); //o/p:- (an empty string)
console.log(string.substr(0,1));    //o/p:- (an empty string)
console.log(string[0]);             //o/p:- undefined
Shailesh Sonare
fonte
3
string.substr (0,1) ausente; :)
Luckylooke
28

const x = 'some string';
console.log(x.substring(0, 1));

ŁukaszW.pl
fonte
11
subsequência é de cerca de 90% mais lento que charAt ver JSPerf
moritzw
18

Exemplo de todo método

Primeiro :string.charAt(index)

Devolver o caractere no índice index

var str = "Stack overflow";

console.log(str.charAt(0));

Segundo :string.substring(start,length);

Retorne a substring na string que inicia no índice starte para após o comprimentolength

Aqui você deseja apenas o primeiro caractere: start = 0elength = 1

var str = "Stack overflow";

console.log(str.substring(0,1));

Alternativa :string[index]

Uma string é uma matriz de caracteres. Assim, você pode obter o primeiro caractere como a primeira célula de uma matriz.

Retornar o caractere no índice indexda sequência

var str = "Stack overflow";

console.log(str[0]);

Alexis
fonte
Cronometrar uma única operação usando console.time () não é um teste de desempenho razoável ou preciso. É claro que não há grande diferença entre eles quando você cronometra apenas uma única operação. Esses métodos realmente têm um desempenho diferente.
Stephen M Irving
17
var x = "somestring"
alert(x.charAt(0));

O método charAt () permite especificar a posição do caractere que você deseja.

O que você estava tentando fazer é colocar o caractere na posição de uma matriz "x", que não é definida como X não é uma matriz.

Eton B.
fonte
15

Você pode até usar slicepara cortar todos os outros caracteres:

x.slice(0, 1);
yckart
fonte
Este método será um dos métodos de menos desempenho para resolver isso. Subótimo.
Stephen M Irving
7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Testado no IE6 + , FF , Chrome , safari .

Swathi
fonte
12
apenas curioso, existe algum motivo para você postar esta resposta? Parece ser uma duplicata da resposta aceita.
Manatherin 12/11/12
5
Eles deram algumas informações extras (mesmo que devessem ser um comentário) ... como em quais navegadores foram testados. Eu sei indexOfque não funciona no IE8 e isso é muito importante para mim. Na verdade, comecei a compatibilidade com o Google charAt até que vi esta resposta aqui em baixo.
gloomy.penguin
6

Tente também:

x.substr(0, 1);
AmazingDayToday
fonte
substr () é considerado uma função herdada e deve ser evitada se possível. Na verdade, não faz parte da linguagem JS e pode ser removido a qualquer momento. Evite usar substr () em todo o novo código e o código antigo deve ser refatorado para usar outros métodos. developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/…
Stephen M Irving
2

x.substring(0,1)

Detalhes

substring(start, end) extrai os caracteres de uma string, entre os 2 índices "start" e "end", sem incluir o próprio "end".

Notas especiais

  • Se "start" for maior que "end", esse método trocará os dois argumentos, significando str.substring (1, 4) == str.substring (4, 1).
  • Se "start" ou "end" for menor que 0, será tratado como se fosse 0.
edelans
fonte
2

Parece que estou atrasado para a festa, mas tente a solução abaixo, que eu pessoalmente achei a melhor solução:

var x = "testing sub string"
alert(x[0]);
alert(x[1]);

A saída deve mostrar um alerta com os valores abaixo: "t" "e"

Dilip
fonte
0

no JQuery você pode usar: na classe para a opção Selecionar:

$('.className').each(function(){
    className.push($("option:selected",this).val().substr(1));
});

na classe para o texto Valor:

$('.className').each(function(){
    className.push($(this).val().substr(1));
});

em ID para o valor do texto:

$("#id").val().substr(1)
Amranur Rahman
fonte
0

No Nodejs você pode usar o Buffer:

let str = "hello world"
let buffer = Buffer.alloc(2, str) // replace 2 by 1 for the first char
console.log(buffer.toString('utf-8')) // display he
console.log(buffer.toString('utf-8').length) // display 2
Sylvain Joly
fonte
0
var string  = "Hello World";
console.log(charAt(0));

O charAt (0) é o método JavaScript. Ele retornará valor com base no índice, aqui 0 é o índice da primeira letra.

Sreehari Ballampalli
fonte