Substring: Difference between revisions

4,425 bytes removed ,  26 days ago
Add Ecstasy example
(→‎{{header|Nascom BASIC}}: Added a solution.)
(Add Ecstasy example)
 
(8 intermediate revisions by 4 users not shown)
Line 2,375:
=={{header|EasyLang}}==
 
<syntaxhighlight lang="text">a$ = "2019-05-22 22:54:22"
a$ = timestr systime
print substr a$ 12 5
print substr a$ 12 -199
#
a$ = "Hallo Österreich!"
print substr a$ 1 (len a$ - 1)
#
c$ = "Ö"
m = 2
i = 1
while substr a$ i 1 <> c$
i += 1
.
print substr a$ i m
#
c$ = "re"
m = 5
i = 1
while substr a$ i len c$ <> c$
i += 1
.
print substr a$ i m
</syntaxhighlight>
<pre>
22:54
22:54:22
</pre>
 
=={{header|ECL}}==
Line 2,419 ⟶ 2,435:
*/
</syntaxhighlight>
 
=={{header|Ecstasy}}==
<syntaxhighlight lang="ecstasy">
module Substrings {
void run(String[] args = []) {
@Inject Console console;
if (args.size < 4) {
console.print(
$|
|Usage:
|
| xec Substrings <str> <offset> <count> <substr>
|
);
return;
}
 
String s = args[0];
Int n = new Int(args[1]);
Int m = new Int(args[2]);
String sub = args[3];
Char c = sub[0];
 
console.print($|
|{s .quoted()=}
|{substring(s, n, m ).quoted()=}
|{substring(s, n ).quoted()=}
|{substring(s ).quoted()=}
|{substring(s, c, m ).quoted()=}
|{substring(s, sub, m).quoted()=}
|
);
}
 
// starting from n characters in and of m length
static String substring(String s, Int n, Int m) {
assert 0 <= n <= n+m;
return n < s.size ? s[n..<(n+m).notGreaterThan(s.size)] : "";
}
 
// starting from n characters in, up to the end of the string
static String substring(String s, Int n) {
assert 0 <= n;
return s.substring(n);
}
 
// whole string minus the last character
static String substring(String s) {
return s.size > 1 ? s[0..<s.size-1] : "";
}
 
// starting from a known character within the string and of m length
static String substring(String s, Char c, Int m){
assert 0 <= m;
return substring(s, s.indexOf(c) ?: 0, m);
}
 
// starting from a known substring within the string and of m length
static String substring(String s, String sub, Int m){
assert 0 <= m;
return substring(s, s.indexOf(sub) ?: 0, m);
}
}
</syntaxhighlight>
 
{{out}}
<pre>
x$ xec doc/examples/Substrings scaryaardvark 5 4 ard
 
s .quoted()="scaryaardvark"
substring(s, n, m ).quoted()="aard"
substring(s, n ).quoted()="aardvark"
substring(s ).quoted()="scaryaardvar"
substring(s, c, m ).quoted()="arya"
substring(s, sub, m).quoted()="ardv"
</pre>
 
=={{header|Eero}}==
Line 3,550 ⟶ 3,642:
=={{header|Lang}}==
<syntaxhighlight lang="lang">
$txt = The langLang programming language!
 
$n = 9
Line 3,566 ⟶ 3,658:
 
fn.println(fn.substring($txt, 0, parser.op(fn.len($txt) - 1)))
# Output: The langLang programming language
 
fn.println(fn.substring($txt, fn.indexOf($txt, $c), parser.op(fn.indexOf($txt, $c) + $m)))
Line 4,339 ⟶ 4,431:
=={{header|Phix}}==
{{libheader|Phix/basics}}
<!--(phixonline)-->
<!--<syntaxhighlight lang="phix">-->
<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>-->
</syntaxhighlight>
{{out}}
<pre>
Line 4,379 ⟶ 4,472:
</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.
 
=={{header|Phixmonti}}==
Line 5,610 ⟶ 5,704:
{{trans|Go}}
{{libheader|Wren-str}}
<syntaxhighlight lang="ecmascriptwren">import "./str" for Str
var s = "αβγδεζηθ"
162

edits