我正在尝试编写一些可以完成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++;
}
}
答案 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()