在SubString方法中返回错误的字符

Pri*_*hiv 4 javascript string substring

我是JS新手,我尝试过以下代码,

var str = "\">2\""
var res = str.substring(2,1);
Run Code Online (Sandbox Code Playgroud)

返回: >

预期: 2

我通过下面的代码检查过这个,

var str = "\">2\""
var res = str.substring(2);
Run Code Online (Sandbox Code Playgroud)

返回: "2\"

预期: "2\"

如果我误解了什么,请告诉我,为什么它会返回>而不是2.在C#中它可以正常工作.

提前致谢

Sur*_*tta 6

实际上你在案例1中做错了

当你这样做

str.substring(2,1);
Run Code Online (Sandbox Code Playgroud)

这实际上意味着

str.substring(1,2);
Run Code Online (Sandbox Code Playgroud)

来自docs

如果indexStart大于indexEnd,则substring()的效果就好像两个参数被交换一样; 例如,str.substring(1,0)== str.substring(0,1).

由于1,2的字符是>,你得到的相同.

但是,当你这样做

str.substring(2);
Run Code Online (Sandbox Code Playgroud)

它实际上等于

 str.substring(2, str.length-1);
Run Code Online (Sandbox Code Playgroud)

如果省略indexEnd,则substring()将字符提取到字符串的末尾.