【问题标题】:errors with charAt method in javascriptjavascript中charAt方法的错误
【发布时间】:2014-12-16 16:40:19
【问题描述】:

我正在使用 javascript 开发一个小项目。我正在使用 charAt 方法从 ace 编辑器获取一行中的第一个字符。 这是我的代码:

function checkFirstChar (lineNo) {
  var words = lines[lineNo].split(" ");
  var firstChar = words[0].charAt(0);

  if (firstChar == "." || firstChar == "#") {
    return 0;
  }
  else return 1;
}

其中 lines 是一个数组或字符串,它是从 ace 编辑器中提取的。问题是,当第一个字符是“#”时,这可以正常工作。但是当第一个字符是'.'时,它不会把它当作一个点'.'相反,它把它当作一个“”(空字符串)。有人可以帮我从这里出去吗 ?有什么问题吗?

编辑: 这就是我获取数组的方式,行。

for(var i = 0, lines = new Array(numOfLines); i<numOfLines; i++ ){
        lines[i] = editor.session.getLine(i);
}

最令人困惑的部分是,当我从 words[0] 发出警报时,它会显示带有点“.”的单词

【问题讨论】:

  • 显示lines 和您对函数checkFirstChar 的调用。如果代码原样,它应该可以正常工作
  • words 以空格开头?
  • @AmitJoki 我添加了一些附加信息。感谢您的帮助。
  • @ThisaruGuruge 尝试在 jsfiddle 中复制您的问题。据我所知,您的代码没有任何问题
  • 听起来你在点之前有一些不可见的零宽度字符。尝试登录words[0].charCodeAt(0)

标签: javascript string charat


【解决方案1】:

我尝试了代码。它对我来说非常好。请检查您的数组中插入的值。我想它应该可以正常工作。 我实现了以下代码:

function myFunc() {
  var words = ".sdf dfsf #sdsd df";
  var firstChar = words[0].charAt(0);
  document.getElementById("demo").innerHTML = "";
  if (firstChar == "." || firstChar == "#")
    document.getElementById("demo").innerHTML = "bingo";
}

【讨论】:

    【解决方案2】:

    您应该将字符串用作字符表,而不是使用 charAt()。

     var firstChar = words[0].charAt(0);
    

    可以替换为

     var firstChar = words[0][0];
    

    【讨论】:

    • charAt() 有什么问题?此外,oldIE 不支持对字符串上的字符进行索引访问。
    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多