문자열의 첫 문자를 얻는 방법?


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에서 작업했습니다.
Yuriy Faktorovich

78
여기 MDN 문서 를 남기고 싶었 습니다. 나는 일반적으로 w3schools보다 이것을 선호합니다.
danwit

12
x.charAt()이 메소드에 인덱스가 전달되지 않은 것처럼 첫 번째 문자를 리턴하며으로 가정합니다 0.
Mohammad Usman

1
@MohammadUsman 불행히도 매개 변수가없는 charAt ()는 Firefox 71에서 Firefox의 chartAt (0)보다 실제로 약 10 배 느리게 실행됩니다. 여기에서 직접 확인하십시오 : jsperf.com/testing-the-first-character- in-a-string / 1
Stephen M 어빙

이 솔루션은 ASCII에는 좋지만 그 이상을 처리하자마자 모든 종류의 방식으로 중단됩니다. "👍".charAt(0)반환 "\ud83d", "café".charAt(3)반환 e및 악센트 등을 떨어 stackoverflow.com/questions/38345372/...을 몇 가지 정보와 좋은 대안 (라이브러리를 사용)이
클레망

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
누락 된 문자열 .substr (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 = 0length = 1

var str = "Stack overflow";

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

대안 :string[index]

문자열은 caract의 배열입니다. 따라서 배열의 첫 번째 셀처럼 첫 번째 caract를 얻을 수 있습니다.

index문자열 의 색인에서 캐럿을 반환

var str = "Stack overflow";

console.log(str[0]);


console.time ()을 사용한 단일 작업의 타이밍은 합리적이거나 정확한 성능 테스트가 아닙니다. 코스 중 하나의 작업 만 시간을 정할 때 그들 사이에는 큰 차이가 없습니다. 이러한 방법은 실제로 다르게 수행됩니다.
Stephen M Irving

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

charAt () 메소드를 사용하면 원하는 문자의 위치를 ​​지정할 수 있습니다.

당신이하려고하는 것은 X가 배열이 아닌 것으로 정의되지 않은 배열 "x"의 위치에서 문자를 얻는 것입니다.


15

slice다른 모든 문자를 잘라내 는 데 사용할 수도 있습니다 .

x.slice(0, 1);

이 방법은이를 해결하는 가장 성능이 낮은 방법 중 하나입니다. 차선책.
Stephen M Irving

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

IE6 + , FF , Chrome , safari 에서 테스트되었습니다 .


12
just curious,이 답변을 게시 한 이유가 있습니까? 허용 된 답변과 중복 된 것으로 보입니다.
Manatherin

5
그들은 어떤 주석을 받았더라도 테스트를 거친 브라우저와 같은 추가 정보를 제공했습니다. indexOfIE8에서는 작동하지 않으며 나에게 중요하다는 것을 알고 있습니다. 실제로이 답변을 여기서 볼 때까지 실제로 Google charAt 호환성을 시작했습니다.
gloomy.penguin


2

x.substring(0,1)

세부

substring(start, end)"end"자체를 포함 하지 않고 두 개의 인덱스 "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에서는 다음을 사용할 수 있습니다.

$('.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은 첫 문자의 인덱스입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.