String matching: Difference between revisions

CoffeeScript
(→‎{{header|C}}: Condensed in observation of the "Know thy standard library" commandment. Output fixed to put newlines at the end of lines.)
(CoffeeScript)
Line 266:
user> (for [i evals] [i (eval i)])
([(. "abcd" startsWith "ab") true] [(. "abcd" endsWith "zn") false] [(. "abab" contains "bb") false] [(. "abab" contains "ab") true] [(. "abab" indexOf "bb") -1] [(let [loc (. "abab" indexOf "ab")] (. "abab" indexOf "ab" (dec loc))) 0])</lang>
 
=={{header|CoffeeScript}}==
 
This example uses string slices, but a better implementation might use indexOf for slightly better performance.
 
<lang coffeescript>
matchAt = (s, frag, i) ->
s[i...i+frag.length] == frag
 
startsWith = (s, frag) ->
matchAt s, frag, 0
endsWith = (s, frag) ->
matchAt s, frag, s.length - frag.length
matchLocations = (s, frag) ->
(i for i in [0..s.length - frag.length] when matchAt s, frag, i)
console.log startsWith "tacoloco", "taco" # true
console.log startsWith "taco", "tacoloco" # false
console.log startsWith "tacoloco", "talk" # false
console.log endsWith "tacoloco", "loco" # true
console.log endsWith "loco", "tacoloco" # false
console.log endsWith "tacoloco", "yoco" # false
console.log matchLocations "bababab", "bab" # [0,2,4]
console.log matchLocations "xxx", "x" # [0,1,2]
</lang>
 
=={{header|D}}==
Line 281 ⟶ 308:
writeln([1,2,3].indexOf([2,3])) ; // 1
}</lang>
 
=={{header|Delphi}}==
<lang Delphi>program CharacterMatching;
Anonymous user