方案中Java的IndexOf()的等价物?

时间:2009-12-19 04:13:16

标签: scheme

我正在开发Scheme中的一个小程序,但我遇到了困难。有没有类似于我可以在Scheme中使用的Java的indexOf()?

5 个答案:

答案 0 :(得分:1)

可能有,但通常教授要你自己写。

这是C风格的伪代码,因为我不想记住语法。

int indexOf(element, list, i)
{
    if car(list) == element then
        return i+1;
    else
        indexOf(element, cdr(list), i+1);
}

请注意,调用它需要为i传递0(如果您愿意,可以编写包装器),并且这是基于1的索引,如果您想要基于0的索引,则将返回更改为i

答案 1 :(得分:1)

假设您正在尝试搜索字符串(并且它不是用于帮助您进行递归的分配),那么您可以尝试这里的函数:

http://okmij.org/ftp/Scheme/util.html

答案 2 :(得分:0)

从您的问题中不清楚您正在使用哪种Scheme实现。

如果是PLT Scheme,你可能正在寻找类似“regexp-match-positions”的东西。

(car (car (regexp-match-positions (regexp-quote "zip") "zapzipdingzip")))

=>

3

答案 3 :(得分:0)

例如在PLT-Scheme中,要采用的方法是使用string-> list将字符串转换为列表,然后使用众多可用方法之一在列表上进行操作。完成后将列表转换回字符串。

答案 4 :(得分:0)

搜索列表(非常安全):

(define indexOf
  (lambda (element lst)
    (indexOfHelper element lst 0)))

(define indexOfHelper
  (lambda (e l i)
    (cond
      [(null? l) -1]
      [(equal? e (car l)) i]
      [else (indexOfHelper e (cdr l) (+ i 1))])))