Text between: Difference between revisions

Content deleted Content added
Thundergnat (talk | contribs)
→‎{{header|Perl 6}}: Add additional tests to match current requirements, add some example tests that will confound most current string based implementations.
→‎{{header|REXX}}: added REXX version 2.
Line 1,088:
 
=={{header|REXX}}==
===version 1===
{{trans|Kotlin}}
<lang rexx>Call test "Hello Rosetta Code world","Hello "," world"
Line 1,176 ⟶ 1,177:
End delimiter: "Foo"
Output: "BarBaz"</pre>
 
===version 2===
This REXX version makes use of the REXX &nbsp; '''parse''' &nbsp; instruction to extract the required string.
 
Also, it wasn't necessary, but I <u>assummed</u> the &nbsp; <big>'''\'''</big> &nbsp; is an escape character, but unless clarified, it was treated as a
<br>commom character, as REXX has no need for escape characters (within character strings).
<lang rexx>/*REXX programs displays the text between two text deliminiters in a target text string.*/
call TB 'Hello Rosetta Code world', "Hello ", ' world'
call TB 'Hello Rosetta Code world', "start", ' world'
call TB 'Hello Rosetta Code world', "Hello", 'end'
call TB '</div><div style=\"chinese\">???</div>', '<div style=\"chinese\">', "</div>"
call TB '<text>Hello <span>Rosetta Code</span> world</text><table style=\"myTable\">',"<text>",'<table>'
call TB '<table style=\"myTable\"><tr><td>hello world</td></tr></table>',"<table>",'</table>'
call TB 'The quick brown fox jumps over the lazy other fox', "quick ", ' fox'
call TB 'One fish two fish red fish blue fish', "fish ", ' red'
call TB 'FooBarBazFooBuxQuux', "Foo", 'Foo'
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
TB: procedure: parse arg T,S,E; say /*obtain text, start delim, end delim. */
say ' Text: "'T'"' /*echo the text to terminal. */
say 'Start delimiter: "'S'"' /* " " start delim " " */
say 'End delimiter: "'E'"' /* " " end " " " */
$=T; if S\=='start' then parse var T (S) $ /*extract stuff after the START delim*/
if E\=='end' then parse var $ $ (E) /* " " before " END. " */
say ' Output: "'$'"' /*display the extracted string to term.*/
return</lang>
{{out|output}}
<pre>
Text: "Hello Rosetta Code world"
Start delimiter: "Hello "
End delimiter: " world"
Output: "Rosetta Code"
 
Text: "Hello Rosetta Code world"
Start delimiter: "start"
End delimiter: " world"
Output: "Hello Rosetta Code"
 
Text: "Hello Rosetta Code world"
Start delimiter: "Hello"
End delimiter: "end"
Output: " Rosetta Code world"
 
Text: "</div><div style=\"chinese\">???</div>"
Start delimiter: "<div style=\"chinese\">"
End delimiter: "</div>"
Output: "???"
 
Text: "<text>Hello <span>Rosetta Code</span> world</text><table style=\"myTable\">"
Start delimiter: "<text>"
End delimiter: "<table>"
Output: "Hello <span>Rosetta Code</span> world</text><table style=\"myTable\">"
 
Text: "<table style=\"myTable\"><tr><td>hello world</td></tr></table>"
Start delimiter: "<table>"
End delimiter: "</table>"
Output: ""
 
Text: "The quick brown fox jumps over the lazy other fox"
Start delimiter: "quick "
End delimiter: " fox"
Output: "brown"
 
Text: "One fish two fish red fish blue fish"
Start delimiter: "fish "
End delimiter: " red"
Output: "two fish"
 
Text: "FooBarBazFooBuxQuux"
Start delimiter: "Foo"
End delimiter: "Foo"
Output: "BarBaz"
</pre>
 
=={{header|Ruby}}==