【问题标题】:How to get first character of string?如何获取字符串的第一个字符?
【发布时间】:2011-03-26 12:33:01
【问题描述】:

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

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

如何修复我的代码?

【问题讨论】:

  • 小心点 - 你可能没有要提取的字符!

标签: javascript


【解决方案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 并去掉重音等。stackoverflow.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);
    

    【讨论】:

    【解决方案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"
                

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

                【讨论】:

                  猜你喜欢
                  • 2015-07-02
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-06-04
                  • 1970-01-01
                  • 2010-10-21
                  • 2017-07-27
                  相关资源
                  最近更新 更多