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

IT技术 javascript
2021-02-18 03:48:20

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

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

我该如何修复我的代码?

6个回答

你想要的是charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'
这个解决方案对 ASCII 很有用,但是一旦你处理的不止这些,它就会以各种方式中断。 "👍".charAt(0)返回"\ud83d""café".charAt(3)返回e并删除重音等。stackoverflow.com/questions/38345372/...有一些信息和一个很好的选择(使用库)
2021-04-19 03:48:20
@MohammadUsman 虽然你说的是真的,但不幸的是,没有任何参数的 charAt() 实际上比 Firefox 71 中的 chartAt(0) 慢大约 10 倍。请在此处亲自查看:jsperf.com/testing-the-first-character-字符串中/1
2021-05-01 03:48:20
曾在 IE7、Chrome、Firefox 上工作。
2021-05-02 03:48:20
x.charAt()还将返回第一个字符,就好像没有将索引传递给此方法一样,它会将其假定为0.
2021-05-14 03:48:20
此外,为了避免给未来的访问者造成混淆:除非您关心 IE 7,否则x[0]效果与 一样好x.charAt(0)
2021-05-14 03:48:20

在 JavaScript 中,你可以这样做:

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

如果更喜欢使用子字符串函数,x.slice(0,1)则较短。要获得最后一个字符,只需使用:x.slice(-1)
2021-05-13 03:48:20

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

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

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
缺少 string.substr(0,1); :)
2021-04-23 03:48:20

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

substring 比 charAt 慢 90%,参见jsperf
2021-05-05 03:48:20

所有方法的示例

第一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]

一个字符串是一个字符数组。所以你可以像数组的第一个单元格一样获得第一个字符。

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

var str = "Stack overflow";

console.log(str[0]);

使用 console.time() 对单个操作计时并不是对性能的合理或准确测试。当然,当您只对单个操作计时时,它们之间没有太大区别。这些方法实际上表现不同。
2021-04-17 03:48:20