如何获取字符串的第一个字符?
Posted
技术标签:
【中文标题】如何获取字符串的第一个字符?【英文标题】:How to get first character of string? 【发布时间】:2011-03-26 12:33:01 【问题描述】:我有一个字符串,我需要获取它的第一个字符。
var x = 'somestring';
alert(x[0]); //in ie7 returns undefined
如何修复我的代码?
【问题讨论】:
小心点 - 你可能没有要提取的字符! 【参考方案1】:你想要的是charAt
。
var x = 'some string';
alert(x.charAt(0)); // alerts 's'
【讨论】:
曾在 IE7、Chrome、Firefox 上工作。x.charAt()
也将返回第一个字符,就好像没有将索引传递给此方法一样,它将假定它为0
。
@MohammadUsman 虽然你说的是真的,但不幸的是,从 Firefox 71 开始,没有任何参数的 charAt() 实际上比 Firefox 中的 chartAt(0) 慢 10 倍左右。请在此处查看:jsperf.com/testing-the-first-character-in-a-string/1
这个解决方案对 ASCII 很好,但是一旦你处理的不止这些,它就会以各种方式中断。 "?".charAt(0)
返回 "\ud83d"
,"café".charAt(3)
返回 e
并去掉重音等。***.com/questions/38345372/… 有一些信息和一个很好的选择(使用库)
另外,为了避免对未来的访问者造成混淆:x[0]
与 x.charAt(0)
一样有效,除非您关心 IE 7【参考方案2】:
在 javascript 中你可以这样做:
const x = 'some string';
console.log(x.substring(0, 1));
【讨论】:
如果更喜欢使用子字符串函数,x.slice(0,1)
更短。要获取最后一个字符,只需使用:x.slice(-1)
【参考方案3】:
您可以使用其中任何一种。
所有这些都有一点区别 所以在条件语句中使用时要小心。
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); :)【参考方案4】:const x = 'some string';
console.log(x.substring(0, 1));
【讨论】:
substring 比 charAt 慢约 90%,见 jsperf【参考方案5】:所有方法的示例
第一:string.charAt(index)
返回索引
index
处的caract
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() 对单个操作进行计时并不是一个合理或准确的性能测试。当然,当您只计时一次操作时,它们之间没有太大区别。这些方法实际上表现不同。【参考方案6】:var x = "somestring"
alert(x.charAt(0));
charAt() 方法允许你指定你想要的字符的位置。
您试图做的是在数组“x”的位置获取字符,该字符未定义为 X 不是数组。
【讨论】:
【参考方案7】:您甚至可以使用slice
来截断所有其他字符:
x.slice(0, 1);
【讨论】:
此方法将是解决此问题的性能最低的方法之一。次优。【参考方案8】:var str="stack overflow";
firstChar = str.charAt(0);
secondChar = str.charAt(1);
在 IE6+、FF、Chrome、safari 中测试。
【讨论】:
只是好奇,你发布这个答案有什么原因吗?它似乎与已接受的答案重复。 他们确实提供了一些额外的信息(即使它应该是评论)......比如它在哪些浏览器中进行了测试。我知道indexOf
在 IE8 中不起作用,这很重要对我来说。我实际上开始搜索 charAt 兼容性,直到我在这里看到这个答案。【参考方案9】:
也试试这个:
x.substr(0, 1);
【讨论】:
substr() 被认为是一个遗留函数,应尽可能避免使用。它实际上不是 JS 语言的一部分,可以随时删除。避免在所有新代码中使用 substr(),旧代码应该重构以使用其他方法。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…【参考方案10】:看来我迟到了,但请尝试以下解决方案,我个人认为这是最佳解决方案:
var x = "testing sub string"
alert(x[0]);
alert(x[1]);
输出应显示具有以下值的警报: “t” "e"
【讨论】:
【参考方案11】:x.substring(0,1)
详情
substring(start, end)
从字符串中提取字符,位于两个索引“start”和“end”之间,不包括“end”本身。
特别说明
如果“start”大于“end”,此方法将交换两个参数,即 str.substring(1, 4) == str.substring(4, 1)。 如果“开始”或“结束”小于 0,则将其视为 0。【讨论】:
【参考方案12】:你可以这样使用:
'Hello Mr Been'.split(' ').map( item => item.toUpperCase().substring(0, 1)).join(' ');
【讨论】:
【参考方案13】:在 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
【讨论】:
【参考方案14】:charAt()
如果有父属性则不起作用
前parent.child.chartAt(0)
使用parent.child.slice(0, 1)
【讨论】:
【参考方案15】:已经 10 年了还没有提到答案RegExp
。
var x = 'somestring';
console.log(x.match(/./)[0]);
【讨论】:
【参考方案16】:在 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)
【讨论】:
这会得到 第一个字符之后的所有内容,而不是第一个字符。【参考方案17】:你也可以使用:
var x = "somestring";
console.log(x.split("")[0]); // output "s"
这应该适用于旧版浏览器。
【讨论】:
以上是关于如何获取字符串的第一个字符?的主要内容,如果未能解决你的问题,请参考以下文章