Как получить первый символ строки?


595

У меня есть строка, и мне нужно получить ее первый символ.

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

Как я могу исправить свой код?


5
только будьте осторожны - у вас может не быть персонажа, которого можно извлечь!
CorsiKa

Ответы:


1046

То, что вы хотите charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'

11
Работал на IE7, Chrome, Firefox.
Юрий Факторович

78
Просто хотел оставить документ MDN здесь. Я обычно предпочитаю это по сравнению с w3schools.
danwit

12
x.charAt()также вернет первый символ, как если бы этот метод не передавал индекс, он примет его к 0.
Мохаммад Усман

1
@MohammadUsman Хотя то, что вы говорите, правда, к сожалению, charAt () без каких-либо параметров на самом деле работает примерно в 10 раз медленнее, чем chartAt (0) в Firefox с Firefox 71. Убедитесь
Стивен М Ирвинг

Это решение хорошо для ASCII, но оно сломается во всех отношениях, как только вы разберетесь с этим. "👍".charAt(0)возвращает "\ud83d", "café".charAt(3)возвращает eи сбрасывает акцент и т. д. stackoverflow.com/questions/38345372/… имеет некоторую информацию и хорошую альтернативу (используйте библиотеку)
Clément

149

В JavaScript вы можете сделать это:

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


5
если вы предпочитаете использовать подстроку, то x.slice(0,1)она короче. И чтобы получить последний символ просто используйте:x.slice(-1)
S.Serpooshan

60

Вы можете использовать любой из них.

Существует небольшая разница между всеми этими, так что будьте осторожны при использовании его в условном выражении.

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
пропущенная строка (0,1); :)
Luckylooke


18

Пример всего метода

Первый :string.charAt(index)

Верните символ в указателе index

var str = "Stack overflow";

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

Второе :string.substring(start,length);

Вернуть подстроку в строке, которая начинается с индекса startи заканчивается после длиныlength

Здесь вы хотите только первый caract так: start = 0иlength = 1

var str = "Stack overflow";

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

Альтернатива :string[index]

Строка - это массив символов. Таким образом, вы можете получить первый символ, например, первую ячейку массива.

Вернуть символ по индексу indexстроки

var str = "Stack overflow";

console.log(str[0]);


Время выполнения одной операции с помощью console.time () не является разумным или точным тестом производительности. Конечно, между ними нет большой разницы, когда вы выполняете только одну операцию. Эти методы на самом деле работают по-разному.
Стивен М Ирвинг

17
var x = "somestring"
alert(x.charAt(0));

Метод charAt () позволяет указать положение символа, который вы хотите.

То, что вы пытались сделать, это получить символ в позиции массива «x», который не определен, поскольку X не является массивом.


15

Вы можете даже использовать, sliceчтобы отключить все другие символы:

x.slice(0, 1);

Этот метод будет одним из наименее эффективных методов решения этой проблемы. Sub-оптимальный.
Стивен М Ирвинг

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Проверено в IE6 + , FF , Chrome , Safari .


12
просто любопытно, есть ли причина, по которой вы разместили этот ответ? Кажется, это дубликат принятого ответа.
Манатерин

5
Они дали некоторую дополнительную информацию (даже если это должен был быть комментарий) ... например, в каких браузерах это было проверено. Я знаю, indexOfчто не работает в IE8, и это довольно важно для меня. На самом деле я начал гуглить совместимость с charAt, пока не увидел этот ответ здесь.
мрачный.пингвин

6

Попробуйте это также:

x.substr(0, 1);

substr () считается устаревшей функцией, и ее следует избегать, если это вообще возможно. На самом деле он не является частью языка JS и может быть удален в любое время. Избегайте использования substr () во всем новом коде, и старый код должен быть реорганизован для использования других методов. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Стивен Ирвинг

2

x.substring(0,1)

подробности

substring(start, end) извлекает символы из строки между двумя индексами «начало» и «конец», не включая сам «конец».

Особые заметки

  • Если «start» больше, чем «end», этот метод поменяет местами два аргумента, что означает str.substring (1, 4) == str.substring (4, 1).
  • Если значение «start» или «end» меньше 0, оно обрабатывается так, как если бы оно было 0.

2

Похоже, я опоздал на вечеринку, но попробуйте следующее решение, которое я лично нашел лучшее решение:

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

Выходные данные должны отображать предупреждение со следующими значениями: "t", "e"


0

в JQuery вы можете использовать: в классе для Select Option:

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

в классе для текста Значение:

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

в ID для текста Значение:

$("#id").val().substr(1)

0

в Nodejs вы можете использовать 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));

CharAt (0) - это метод JavaScript, он будет возвращать значение на основе индекса, здесь 0 - индекс для первой буквы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.