一个答案很好,但是需要一点阅读。尤其是用新术语“停止”。
我的围棋(Go)–除上面丹尼尔(Daniel)的第一个回答外,还通过差异进行整理,使其变得有用:
1)负指标。子字符串需要正索引,并将负索引设置为0。slice的负索引表示从字符串末尾开始的位置。
"1234".substring(-2, -1) == "1234".substring(0,0) == ""
"1234".slice(-2, -1) == "1234".slice(2, 3) == "3"
2)交换索引。子字符串将对索引重新排序,以使第一个索引小于或等于第二个索引。
"1234".substring(3,2) == "1234".substring(2,3) == "3"
"1234".slice(3,2) == ""
--------------------------
一般评论-我觉得第二个索引是切片或子字符串的最后一个字符之后的位置很奇怪。我希望“ 1234” .slice(2,2)返回“ 3”。这使Andy的困惑超出了合理范围-我希望“ 1234” .slice(2,-1)返回“ 34”。是的,这意味着我是Java的新手。这也意味着这种行为:
"1234".slice(-2, -2) == "", "1234".slice(-2, -1) == "3", "1234".slice(-2, -0) == "" <-- you have to use length or omit the argument to get the 4.
"1234".slice(3, -2) == "", "1234".slice(3, -1) == "", "1234".slice(3, -0) == "" <-- same issue, but seems weirder.
我的2c。
slice
是行为异常最少的一种。