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


593

我有一个字符串,我需要获取它的第一个字符。

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

如何修复我的代码?


5
请小心-您可能没有要提取的角色!
corsiKa 2010年

Answers:


1043

你想要的是charAt

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

11
在IE7,Chrome,Firefox上工作。
Yuriy Faktorovich

78
只是想在此处保留MDN文档。我通常比w3schools更喜欢它。
danwit 2014年

12
x.charAt()还将返回第一个字符,就像没有索引传递给此方法一样,它将假定它为0
Mohammad Usman '18

1
@MohammadUsman虽然你说的是真的,可惜的charAt()不带任何参数实际上这里运行约10倍比chartAt(0)在Firefox慢火狐71.看到自己:jsperf.com/testing-the-first-character- in-a-string / 1
Stephen M Irving,

此解决方案对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
缺少string.substr(0,1); :)
Luckylooke


18

所有方法的例子

首先string.charAt(index)

返回索引处的caract 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的数组。这样您就可以像阵列的第一个单元格一样获得第一个字符。

index在字符串的索引处返回caract

var str = "Stack overflow";

console.log(str[0]);


使用console.time()对单个操作进行计时不是合理或准确的性能测试。在COURSE的过程中,仅一次执行一次操作就没有太大区别。这些方法实际上的执行方式有所不同。
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 +FFChromeSafari中进行了测试


12
只是好奇,请问您发布此答案的原因吗?似乎与已接受的答案重复。
Manatherin 2012年

5
他们确实提供了一些额外的信息(即使它应该是评论)……像在什么浏览器中进行了测试。我知道indexOf在IE8中不起作用,这对我来说很重要。我实际上开始使用Google的charAt兼容性,直到我在这里看到答案为止。
gloomy.penguin


2

x.substring(0,1)

细节

substring(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中显示文字值:

$("#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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.