我怎么知道我什么时候在JS中的字符串结尾?

时间:2019-02-12 07:45:17

标签: javascript

我正在尝试编写一些可以完成JavaScript .length工作的代码。换句话说,我正在尝试编写一个可以计算字符串中字符数的函数。

现在,我编写了一些在检测到" "时停止的代码,但这并不是最好的做法,因为用户无法在其字符串中输入任何空格。在C中,字符串的末尾有\0,如何在Javascript中看到它?

function StringLength() {
    var nb = 0;
    var i = 0;
    //take the value of 'inputUser' and save it in 'input'
    var input = document.getElementById('inputUser').value;
    input = input + " ";
    //loop that stop when there is a " "
    while (input[i] != " ") {
        nb++;
        i++;
    }
}

2 个答案:

答案 0 :(得分:1)

当您访问字符串末尾的属性时,值将为undefined

function StringLength(str) {
    var i = 0;
    while (str[i] !== undefined) {
        i++;
    }
    return i;
}
console.log(StringLength('foo'));

答案 1 :(得分:0)

C中字符串的末尾没有/n/n并不表示特殊,它是/后跟n。 / p>

您可能正在考虑\n,即new line character,但C字符串并未以此结尾。

C字符串的长度未存储在任何地方。为了计算它,您必须依靠这样的事实,即在字符串之后总是有一个Null character(即代码为0的字符),通常表示为\0,{{ 1}}或C中的\x0
但是,这是如何定义C字符串的。它们在字符串后始终始终有一个Null字符,程序可以访问所需的任何存储位置,包括在字符串数据后 后的Null字符。

JavaScript是另一种语言,它使用不同的规则。

首先,程序无法访问随机存储器。它无法检查字符串后是否有Null字符,因为它只能获取字符串中 内的字符。 Javascript解释器知道字符串的内部外部的是什么,因为它还存储字符串的长度。

从程序的角度来看,字符串外没有任何内容,并且,如果您想通过使用无效索引到达字符串外的字符,则会得到0

您可以使用它来计算Javascript字符串的长度:

undefined

像这样在代码中使用该函数(在function StringLength(input) { var i = 0; while (input[i] !== undefined) { i++; } return i; } // Examples of usage console.log(StringLength('')); console.log(StringLength('abc'));函数外部获取要测量的值以使其可重用):

StringLength()