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

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 = 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() 对单个操作进行计时并不是一个合理或准确的性能测试。当然,当您只计时一次操作时,它们之间没有太大区别。这些方法实际上表现不同。【参考方案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+FFChromesafari 中测试。

【讨论】:

只是好奇,你发布这个答案有什么原因吗?它似乎与已接受的答案重复。 他们确实提供了一些额外的信息(即使它应该是评论)......比如它在哪些浏览器中进行了测试。我知道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"

这应该适用于旧版浏览器。

【讨论】:

以上是关于如何获取字符串的第一个字符?的主要内容,如果未能解决你的问题,请参考以下文章

sap 如何获取字符串最后一位

如何根据分隔符“|”之前的匹配值获取字符串中的第二个值?

如何从 UILabel 的第 n 行获取文本/字符串?

如何取一个字符串遇到某个字符之前的部分?

java中如何获取某个字符在另一个字符串中的全部索引值

如何在 oracle 查询中获取字符串的第一行?