如何获得字符串的第一个字符?

Sim*_*mon 558 javascript

我有一个字符串,我需要得到它的第一个字符.

var x = 'somestring';
alert(x[0]); //in ie7 returns undefined
Run Code Online (Sandbox Code Playgroud)

我该如何修复我的代码?

Dan*_*uis 981

你想要的是什么charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'
Run Code Online (Sandbox Code Playgroud)

  • 只想在这里留下[MDN doc](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt).我通常比w3schools更喜欢这个. (74认同)
  • 适用于IE7,Chrome,Firefox. (10认同)
  • `x.charAt()`也会返回第一个字符,好像没有索引传递给这个方法,它会把它假设为`0`. (10认同)
  • 这个解决方案对于 ASCII 很有用,但是一旦你处理的内容超出了这个范围,它就会以各种方式崩溃。`"".charAt(0)` 返回 `"\ud83d"`,`"café".charAt(3)` 返回 `e` 并删除重音等。 /sf/ask/2684176071/ Why-is-an-emoji-string-length-2 有一些信息和一个很好的替代方案(使用库) (4认同)
  • 另外,为了避免未来访问者感到困惑:“x[0]”与“x.charAt(0)”一样有效,除非您关心 IE 7 (4认同)

Dus*_*ine 140

在JavaScript中,您可以这样做:

const x = 'some string';
console.log(x.substring(0, 1));
Run Code Online (Sandbox Code Playgroud)

  • 如果更喜欢使用子字符串函数,则x.slice(0,1)较短。要获得最后一个字符,只需使用:x.slice(-1) (3认同)
  • “切片”更短,只要你不认为每次你(或任何其他维护者)阅读它时失去几秒钟的生命是一种浪费,并且每次你触摸它时都必须考虑它实际上应该实现什么再次输入代码。永远。只需使用实际说明您正在做什么的功能,20 年后当您尝试解决自己造成的混乱时,您会更快乐。#个人经验 (2认同)

Sha*_*are 51

您可以使用其中任何一种.

所有这些之间有一点区别所以在条件语句中使用它时要小心.

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
Run Code Online (Sandbox Code Playgroud)

  • 缺少string.substr(0,1); :) (3认同)

Łuk*_*.pl 25

x.substring(0,1)

  • charct见[jsperf](https://jsperf.com/jssubstrcharat),子字符串慢约90% (10认同)
  • 关于性能,是`x.chartAt(0)`更快? (2认同)

Eto*_* B. 16

var x = "somestring"
alert(x.charAt(0));
Run Code Online (Sandbox Code Playgroud)

charAt()方法允许您指定所需字符的位置.

您要做的是将字符放在数组"x"的位置,该数组未定义为X不是数组.


Ale*_*xis 16

所有方法的示例

第一:string.charAt(index)

返回索引处的caract index

var str = "Stack overflow";

console.time("charat");

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

console.timeEnd("charat");
Run Code Online (Sandbox Code Playgroud)

第二:string.substring(start,length);

返回字符串中从索引开始start并在长度后停止的子字符串length

在这里你只需要第一个结果:start = 0length = 1

var str = "Stack overflow";

console.time("substring");

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

console.timeEnd("substring");
Run Code Online (Sandbox Code Playgroud)

另类:string[index]

字符串是一个caract数组.所以你可以得到第一个像数组的第一个单元格.

返回index字符串索引处的caract

var str = "Stack overflow";

console.time("array");

console.log(str[0]);

console.timeEnd("array");
Run Code Online (Sandbox Code Playgroud)


yck*_*art 14

你甚至可以slice用来截断所有其他角色:

x.slice(0, 1);
Run Code Online (Sandbox Code Playgroud)


Swa*_*thi 7

var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);
Run Code Online (Sandbox Code Playgroud)

IE6 +,FF,Chrome,safari中测试过.

  • 只是好奇,你有没有理由发布这个答案?它似乎与接受的答案重复. (12认同)
  • 他们确实提供了一些额外的信息(即使它应该是评论)...就像测试它的浏览器一样.我知道`indexOf`在IE8中不起作用,这对我来说非常重要.我实际上开始谷歌charAt兼容性,直到我在这里看到这个答案的方式. (5认同)