Як отримати перший символ рядка?


595

У мене є струна, і мені потрібно отримати її перший символ.

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

Як я можу виправити свій код?


5
просто будьте обережні - у вас може не бути персонажа, який слід витягувати!
corsiKa

Відповіді:


1045

Те, що ти хочеш, так і є charAt.

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

11
Працював над IE7, Chrome, Firefox.
Юрій Факторович

78
Просто хотів залишити тут документ MDN . Я, як правило, віддаю перевагу цьому перед школами w3.
danwit

12
x.charAt()також поверне перший символ так, як ніби індекс не передається цьому методу, він вважатиме його рівнем 0.
Мохаммед Усман

1
@MohammadUsman Хоча те, що ви говорите, є правдою, але, на жаль, charAt () без будь-яких параметрів насправді працює приблизно в 10 разів повільніше, ніж chartAt (0) у Firefox, як у Firefox 71. Подивіться самі тут: jsperf.com/testing-the-first-character- in-a-string / 1
Стівен М Ірвінг

Це рішення добре для 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
відсутність string.substr (0,1); :)
Luckylooke


18

Приклад усіх методів

По-перше :string.charAt(index)

Поверніть каракт на індекс index

var str = "Stack overflow";

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

Друге :string.substring(start,length);

Поверніть підрядку в рядку, яка починається з індексу startта зупиняється після довжиниlength

Тут ви хочете тільки перший каракт так: 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);

Цей метод буде одним із найменш ефективних методів вирішення цього питання. Суб-оптимальний.
Стівен М Ірвінг

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Тестували в IE6 + , FF , Chrome , сафарі .


12
просто цікаво, чи є причина, коли ви опублікували цю відповідь? Здається, це дублікат прийнятої відповіді.
Манатерин

5
Вони дали додаткову інформацію (навіть якщо це мав бути коментар) ... як, наприклад, у яких браузерах тестували. Я знаю, indexOfщо не працює в IE8, і це для мене досить важливо. Я фактично почав сумісність google charAt, поки не побачив тут відповідь.
похмурий.penguin

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).
  • Якщо або "початок", або "кінець" менше 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").val().substr(1)

0

в Nodejs ви можете використовувати буфер:

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.