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?


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'

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));


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

3
string.substr (0,1) ausente; :)
Luckylooke


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]);


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.


15

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

x.slice(0, 1);

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 .


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


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.

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"


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)

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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.