Javascript 为什么我的子字符串在这样写的时候起作用?
关于我的代码的行为,有一个简单的问题:我只想删除JavaScript中字符串的第一个和最后一个字符。这就是我的代码看起来的样子(它实际上是按照预期的方式工作的):Javascript 为什么我的子字符串在这样写的时候起作用?,javascript,Javascript,关于我的代码的行为,有一个简单的问题:我只想删除JavaScript中字符串的第一个和最后一个字符。这就是我的代码看起来的样子(它实际上是按照预期的方式工作的): var元素=”; element=element.substring(1,element.length-1); 但是为什么在使用-1时也会删除最后一个字符呢?在element.length时,字符串的长度理论上不应该仍然是11(因为子字符串还没有执行),所以我告诉它从索引1开始,长度为10的子字符串 这可能是一个相当令人困惑的问题,
var元素=”;
element=element.substring(1,element.length-1);
但是为什么在使用-1时也会删除最后一个字符呢?在element.length时,字符串的长度理论上不应该仍然是11(因为子字符串还没有执行),所以我告诉它从索引1开始,长度为10的子字符串
这可能是一个相当令人困惑的问题,但也许有人可以澄清一点 子字符串的参数是:
子字符串(从索引到索引)
索引从0开始,一直到长度-1
如果字符串长度为11个字符,则字符串的索引从0开始,到10结束
因此,如果字符串是“abcd”
,则从索引1到4(长度)-1取一个子字符串,得到“bcd”
在您的情况下(跳过括号):
var element = "<LightName>";
element = element.substring(1, element.length - 1);
var元素=”;
element=element.substring(1,element.length-1);
子字符串的参数是:子字符串(从索引到索引)
索引从0开始,一直到长度-1
如果字符串长度为11个字符,则字符串的索引从0开始,到10结束
因此,如果字符串是“abcd”
,则从索引1到4(长度)-1取一个子字符串,得到“bcd”
在您的情况下(跳过括号):
var element = "<LightName>";
element = element.substring(1, element.length - 1);
var元素=”;
element=element.substring(1,element.length-1);
从中,子字符串方法签名为:
string.substring(from, to)
这意味着第二个参数不是子字符串的长度,而是结束位置。从中,子字符串方法签名是:
string.substring(from, to)
这意味着第二个参数不是子字符串的长度,而是结束位置。除了字符串中的第一个和最后一个字符外,返回所有字符。由于从0开始,如果从总长度中减去1,将得到正确的结果。那么您将返回字符串中除第一个和最后一个字符以外的所有字符。因为你从0开始,如果你从总长度中减去1,你将得到正确的结果。from(我知道w3学校不是最好的引用地点,但它清楚地表明了这一点) 这不是“to”参数的长度,直到整行都从这里开始,它才改变(我知道w3学校不是最好引用的地方,但它清楚地表明了这一点)
它不是“to”参数的长度,在整行运行之前,该参数不会更改。子字符串的开始位置和结束位置作为参数。 .substr将偏移量和长度作为参数 例如:
var a = "abcdefghijklmnopqrstuvwxyz"
var s = a.substring(5, 11) // fghijk
var s2 = a.substr(5, 11) // fghijklmnop
.子字符串具有开始位置和结束位置作为参数。 .substr将偏移量和长度作为参数 例如:
var a = "abcdefghijklmnopqrstuvwxyz"
var s = a.substring(5, 11) // fghijk
var s2 = a.substr(5, 11) // fghijklmnop
因为你的绳子的长度是11。你的函数说,从索引1到索引(11-1)10获取子字符串。但是,子字符串不包括最后一个索引。因此,可以有效地从索引1到索引9获取子字符串。因为字符串的长度是11。你的函数说,从索引1到索引(11-1)10获取子字符串。但是,子字符串不包括最后一个索引。因此,有效地得到了从索引1到索引9的子字符串
.substring(first,second);
第一个参数是起始位置,起始索引为0。
第二个参数是结束位置,但它是从第一个到第二个的排他性方法,但不包括第二个
第一个参数是起始位置,起始索引为0。
第二个参数是结束位置,但它是从第一个到第二个的排他性方法,但不包括第二个 哦,好吧,看来我误解了子串。如果这是正确的立场,那绝对有道理。非常感谢。OP的想法是@Jongware没错,因为我把它和PHP混合了起来+1因为我甚至不知道JS中也有一个等价的方法。哦,好吧,看起来我误解了子字符串。如果这是正确的立场,那绝对有道理。非常感谢。OP的想法是@Jongware没错,因为我把它和PHP混合了起来+1因为我甚至不知道JS中也有相同的方法。谢谢你的回复,但不是-2;)。我现在明白了,这是因为第二个参数不是长度,而是位置。很乐意帮忙。打字错误:)谢谢你的回复,但不是-2;)。我现在明白了,这是因为第二个参数不是长度,而是位置。很乐意帮忙。打字错误:)