我如何找到一个字符串的索引在Golfscript



给定字符串"ABCDE",我如何找到另一个字符串"C"在Golfscript发生的索引?

?操作符似乎不工作(http://www.golfscript.com/golfscript/builtin.html#?):

"C" "ABCDE" ?

"C""ABCDE".,,@`@`{@>1$,<=}++?

"C" "ABCDE" ?不可能工作-如果它做了一个字符串搜索,它将寻找ABCDEC中第一次出现。

然而,在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

最新更新