2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,9 +1,17 @@
|
|||
{{basic data operation}}
|
||||
[[Category:String manipulation]] [[Category: String manipulation]] [[Category:Simple]]
|
||||
{{basic data operation}}
|
||||
[[Category:String manipulation]]
|
||||
[[Category: String manipulation]]
|
||||
[[Category:Simple]]
|
||||
{{omit from|bc|No string operations in bc}}
|
||||
{{omit from|dc|No string operations in dc}}
|
||||
|
||||
;Task:
|
||||
Create a string variable equal to any text value.
|
||||
|
||||
Prepend the string variable with another string literal.
|
||||
|
||||
If your language supports any idiomatic ways to do this without referring to the variable twice in one expression, include such solutions.
|
||||
|
||||
|
||||
To illustrate the operation, show the content of the variable.
|
||||
<br><br>
|
||||
|
|
|
|||
8
Task/String-prepend/Ada/string-prepend.ada
Normal file
8
Task/String-prepend/Ada/string-prepend.ada
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
with Ada.Text_IO; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
|
||||
|
||||
procedure Prepend_String is
|
||||
S: Unbounded_String := To_Unbounded_String("World!");
|
||||
begin
|
||||
S := "Hello " & S;-- this is the operation to prepend "Hello " to S.
|
||||
Ada.Text_IO.Put_Line(To_String(S));
|
||||
end Prepend_String;
|
||||
25
Task/String-prepend/COBOL/string-prepend-1.cobol
Normal file
25
Task/String-prepend/COBOL/string-prepend-1.cobol
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
identification division.
|
||||
program-id. prepend.
|
||||
data division.
|
||||
working-storage section.
|
||||
1 str pic x(30) value "World!".
|
||||
1 binary.
|
||||
2 len pic 9(4) value 0.
|
||||
2 scratch pic 9(4) value 0.
|
||||
procedure division.
|
||||
begin.
|
||||
perform rev-sub-str
|
||||
move function reverse ("Hello ") to str (len + 1:)
|
||||
perform rev-sub-str
|
||||
display str
|
||||
stop run
|
||||
.
|
||||
|
||||
rev-sub-str.
|
||||
move 0 to len scratch
|
||||
inspect function reverse (str)
|
||||
tallying scratch for leading spaces
|
||||
len for characters after space
|
||||
move function reverse (str (1:len)) to str
|
||||
.
|
||||
end program prepend.
|
||||
19
Task/String-prepend/Forth/string-prepend.fth
Normal file
19
Task/String-prepend/Forth/string-prepend.fth
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
\ the following functions are commonly native to a Forth system. Shown for completeness
|
||||
|
||||
: C+! ( n addr -- ) dup c@ rot + swap c! ; \ primitive: increment a byte at addr by n
|
||||
|
||||
: +PLACE ( addr1 length addr2 -- ) \ Append addr1 length to addr2
|
||||
2dup 2>r count + swap move 2r> c+! ;
|
||||
|
||||
: PLACE ( addr1 len addr2 -- ) \ addr1 and length, placed at addr2 as counted string
|
||||
2dup 2>r 1+ swap move 2r> c! ;
|
||||
|
||||
\ Example begins here
|
||||
: PREPEND ( addr len addr2 -- addr2)
|
||||
>R \ push addr2 to return stack
|
||||
PAD PLACE \ place the 1st string in PAD
|
||||
R@ count PAD +PLACE \ append PAD with addr2 string
|
||||
PAD count R@ PLACE \ move the whole thing back into addr2
|
||||
R> ; \ leave a copy of addr2 on the data stack
|
||||
|
||||
: writeln ( addr -- ) cr count type ; \ syntax sugar for testing
|
||||
15
Task/String-prepend/Fortran/string-prepend-1.f
Normal file
15
Task/String-prepend/Fortran/string-prepend-1.f
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
INTEGER*4 I,TEXT(66)
|
||||
DATA TEXT(1),TEXT(2),TEXT(3)/"Wo","rl","d!"/
|
||||
|
||||
WRITE (6,1) (TEXT(I), I = 1,3)
|
||||
1 FORMAT ("Hello ",66A2)
|
||||
|
||||
DO 2 I = 1,3
|
||||
2 TEXT(I + 3) = TEXT(I)
|
||||
TEXT(1) = "He"
|
||||
TEXT(2) = "ll"
|
||||
TEXT(3) = "o "
|
||||
|
||||
WRITE (6,3) (TEXT(I), I = 1,6)
|
||||
3 FORMAT (66A2)
|
||||
END
|
||||
5
Task/String-prepend/Fortran/string-prepend-2.f
Normal file
5
Task/String-prepend/Fortran/string-prepend-2.f
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
CHARACTER*66 TEXT
|
||||
TEXT = "World!"
|
||||
TEXT = "Hello "//TEXT
|
||||
WRITE (6,*) TEXT
|
||||
END
|
||||
4
Task/String-prepend/Maple/string-prepend.maple
Normal file
4
Task/String-prepend/Maple/string-prepend.maple
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
l := " World";
|
||||
m := cat("Hello", l);
|
||||
n := "Hello"||l;
|
||||
o := `||`("Hello", l);
|
||||
11
Task/String-prepend/PlainTeX/string-prepend-1.tex
Normal file
11
Task/String-prepend/PlainTeX/string-prepend-1.tex
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
\def\prepend#1#2{% #1=string #2=macro containing a string
|
||||
\def\tempstring{#1}%
|
||||
\expandafter\expandafter\expandafter
|
||||
\def\expandafter\expandafter\expandafter
|
||||
#2\expandafter\expandafter\expandafter
|
||||
{\expandafter\tempstring#2}%
|
||||
}
|
||||
\def\mystring{world!}
|
||||
\prepend{Hello }\mystring
|
||||
Result : \mystring
|
||||
\bye
|
||||
7
Task/String-prepend/PlainTeX/string-prepend-2.tex
Normal file
7
Task/String-prepend/PlainTeX/string-prepend-2.tex
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
\def\prepend#1#2{% #1=string #2=macro containing a string
|
||||
\edef#2{\unexpanded{#1}\unexpanded\expandafter{#2}}%
|
||||
}
|
||||
\def\mystring{world!}
|
||||
\prepend{Hello }\mystring
|
||||
Result : \mystring
|
||||
\bye
|
||||
3
Task/String-prepend/SNOBOL4/string-prepend.sno
Normal file
3
Task/String-prepend/SNOBOL4/string-prepend.sno
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
s = ', World!'
|
||||
OUTPUT = s = 'Hello' s
|
||||
END
|
||||
Loading…
Add table
Add a link
Reference in a new issue