Jump to content

Substring: Difference between revisions

7,328 bytes removed ,  3 months ago
m
→‎{{header|Phix}}: use pygments
m (→‎{{header|Phix}}: use pygments)
Line 4,355:
=={{header|Phix}}==
{{libheader|Phix/basics}}
<!--(phixonline)-->
<!--<syntaxhighlight lang="phix">-->
<span style="color: #000080;font-style:italic;">--(1) starting from n characters in and of m length;
--(21) starting from n characters in, up to the endand of them stringlength;
--(2) starting from n characters in, up to the end of the string;
--(3) whole string minus last character;
--(43) startingwhole fromstring aminus knownlast character within the string and of m length;
--(54) starting from a known substringcharacter within the string and of m length.; </span>
--(5) starting from a known substring within the string and of m length.
<span style="color: #008080;">constant</span> <span style="color: #000000;">sentence</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"the last thing the man said was the"</span><span style="color: #0000FF;">,</span>
constant sentence = "the last thing the man said was the",
<span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">10</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">m</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">5</span>
n = 10, m = 5
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">l</span>
integer k, l
<span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">+</span><span style="color: #000000;">m</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span>
l = n+m-1
<span style="color: #008080;">if</span> <span style="color: #000000;">l</span><span style="color: #0000FF;"><=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
if l<=length(sentence) then
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">..</span><span style="color: #000000;">l</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- (1)</span>
?sentence[n..l] -- (1)
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<span style="color: #008080;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;"><=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
if n<=length(sentence) then
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- (2) or [n..$]</span>
?sentence[n..-1] -- (2) or [n..$]
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)></span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
if length(sentence)>0 then
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">2</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- (3) or [1..$-1]</span>
?sentence[1..-2] -- (3) or [1..$-1]
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #008000;">'m'</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)</span>
k = find('m',sentence)
<span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">m</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span>
l = k+m-1
<span style="color: #008080;">if</span> <span style="color: #000000;">l</span><span style="color: #0000FF;"><=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
if l<=length(sentence) then
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">..</span><span style="color: #000000;">l</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- (4)</span>
?sentence[k..l] -- (4)
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"aid"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)</span>
k = match("aid",sentence)
<span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">m</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span>
l = k+m-1
<span style="color: #008080;">if</span> <span style="color: #000000;">l</span><span style="color: #0000FF;"><=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
if l<=length(sentence) then
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">..</span><span style="color: #000000;">l</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- (5)</span>
?sentence[k..l] -- (5)
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end if
<!--</syntaxhighlight>-->
{{out}}
<pre>
Line 4,395 ⟶ 4,396:
</pre>
Alternative version with no error handling, for those in a hurry (same ouput):
<!--<syntaxhighlight lang="phix">-->
?sentence[n..n+m-1]
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">..</span><span style="color: #000000;">n</span><span style="color: #0000FF;">+</span><span style="color: #000000;">m</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
?sentence[n..-1]
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
?sentence[1..-2]
<span style="color: #0000FF;">?</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">2</span><span style="color: #0000FF;">]</span>
?(sentence[find('m',sentence)..$])[1..m]
<span style="color: #0000FF;">?(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #008000;">'m'</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)..$])[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">m</span><span style="color: #0000FF;">]</span>
?(sentence[match("aid",sentence)..$])[1..m]
<span style="color: #0000FF;">?(</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">[</span><span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"aid"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sentence</span><span style="color: #0000FF;">)..$])[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">m</span><span style="color: #0000FF;">]</span>
<!--</syntaxhighlight>-->
If sentence is UTF-8 or UTF-16, you should explicitly use sequence utf32 = utf8_to_utf32(string utf8) or sequence utf32 = utf16_to_utf32(sequence utf16) before any slicing or find()/match(), and string utf8 = utf32_to_utf8(sequence utf32) or sequence utf16 = utf32_to_utf16(sequence utf32) before display. Note that unicode does not normally display correctly on a standard Windows console, but is fine in a GUI or Linux console or a web browser.
 
7,813

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.