String matching: Difference between revisions

Content added Content deleted
No edit summary
(add lambdatalk)
Line 2,685: Line 2,685:
[[File:LabVIEW_Character_matching_2.png]]<br/>
[[File:LabVIEW_Character_matching_2.png]]<br/>
[[File:LabVIEW_Character_matching_3.png]]
[[File:LabVIEW_Character_matching_3.png]]

=={{header|Lambdatalk}}==
<lang Scheme>
{def S.in
{def S.in.r {lambda {:c :w :i :n}
{if {= :i :n}
then -1
else {if {W.equal? :c {W.get :i :w}}
then :i
else {S.in.r :c :w {+ :i 1} :n}}}}}
{lambda {:c :w}
{S.in.r :c :w 0 {W.length :w}}}}
-> S.in



{def startswith
{lambda {:w1 :w2}
{= {S.in _ {S.replace :w2 by _ in :w1}} 0}}}
-> startswith

{def endswith
{lambda {:w1 :w2}
{= {S.in _ {S.replace :w2 by _ in :w1}}
{- {W.length :w1} {W.length :w2}}}}}
-> endswith

{def isin
{lambda {:w1 :w2}
{S.in _ {S.replace :w2 by _ in :w1}}}}
-> isin

{startswith nabuchodonosor nabu}
-> true
{startswith nabuchodonosor abu}
-> false

{endswith nabuchodonosor sor}
-> true
{endswith nabuchodonosor oso}
-> false

{isin nabuchodonosor oso}
-> 10 // is in at 10
{isin nabuchodonosor xyz}
-> -1 // is not in

</lang>


=={{header|Lang5}}==
=={{header|Lang5}}==