给定字符串"ABCDE",我如何找到另一个字符串"C"在Golfscript发生的索引?
?操作符似乎不工作(http://www.golfscript.com/golfscript/builtin.html#?):
"C" "ABCDE" ?
"C""ABCDE".,,@`@`{@>1$,<=}++?
"C" "ABCDE" ?
不可能工作-如果它做了一个字符串搜索,它将寻找ABCDE
在C
中第一次出现。
然而,在GolfScript中,字符串实际上是整数数组的不同表示。"ABCDE"67?
给出2
,因为67是C
的Unicode码点。
另一种稍微好一点的方法是(X)
"C""ABCDE".,,`{>1$,<}+%?
这是相当违反直觉的,但"正确":?
是一个顺序操作,字符串优先于数组。比较:
[[1][2][3][4][5]][3]?
["1""2""3""4""5"]"3"?
第一个返回2,正如预期的那样,但第二个返回-1,因为string的优先级意味着它正在搜索字符串内部的数组-并且任何数组都不会等于表示Unicode码点的int。但是,这些示例确实指出了在使用方法x之前将字符串简化为整型数组的另一种方法。
更新我发了一封电子邮件给flagtious建议一个补丁和最新版本的Golfscript有string string ?
和string array ?
的新行为。所以如果你更新,"ABCDE""C"?
应该给2
。