Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,6 @@
---
category:
- String manipulation
- String manipulation
from: http://rosettacode.org/wiki/String_append
note: Basic language learning

View file

@ -0,0 +1,13 @@
{{basic data operation}}
[[Category:Simple]]
Most languages provide a way to concatenate two string values, but some languages also provide a convenient way to append in-place to an existing string variable without referring to the variable twice.
;Task:
Create a string variable equal to any text value.
Append the string variable with another string literal in the most idiomatic way, without double reference if your language supports it.
Show the contents of the variable after the append operation.
<br><br>

View file

@ -0,0 +1,3 @@
V s = 12345678
s = 9!
print(s)

View file

@ -0,0 +1,86 @@
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program appendstr64.s */
/*******************************************/
/* Constantes file */
/*******************************************/
/* for this file see task include a file in language AArch64 assembly*/
.include "../includeConstantesARM64.inc"
.equ BUFFERSIZE, 100
/*******************************************/
/* Initialized data */
/*******************************************/
.data
szMessString: .asciz "String :\n"
szString1: .asciz "Alphabet : "
sComplement: .fill BUFFERSIZE,1,0
szString2: .asciz "abcdefghijklmnopqrstuvwxyz"
szCarriageReturn: .asciz "\n"
/*******************************************/
/* UnInitialized data */
/*******************************************/
.bss
/*******************************************/
/* code section */
/*******************************************/
.text
.global main
main:
ldr x0,qAdrszMessString // display message
bl affichageMess
ldr x0,qAdrszString1 // display begin string
bl affichageMess
ldr x0,qAdrszCarriageReturn // display return line
bl affichageMess
ldr x0,qAdrszString1
ldr x1,qAdrszString2
bl append // append sting2 to string1
ldr x0,qAdrszMessString
bl affichageMess
ldr x0,qAdrszString1 // display string
bl affichageMess
ldr x0,qAdrszCarriageReturn
bl affichageMess
100: // standard end of the program
mov x0,0 // return code
mov x8,EXIT // request to exit program
svc 0 // perform system call
qAdrszMessString: .quad szMessString
qAdrszString1: .quad szString1
qAdrszString2: .quad szString2
qAdrszCarriageReturn: .quad szCarriageReturn
/**************************************************/
/* append two strings */
/**************************************************/
/* x0 contains the address of the string1 */
/* x1 contains the address of the string2 */
append:
stp x1,lr,[sp,-16]! // save registers
mov x2,#0 // counter byte string 1
1:
ldrb w3,[x0,x2] // load byte string 1
cmp x3,#0 // zero final ?
add x4,x2,1
csel x2,x4,x2,ne // if x3 not equal 0, x2 = X2 +1 else x2
bne 1b // no -> loop
mov x4,#0 // counter byte string 2
2:
ldrb w3,[x1,x4] // load byte string 2
strb w3,[x0,x2] // store byte string 1
cbz x3,100f // zero final ?
add x2,x2,1 // no -> increment counter 1
add x4,x4,1 // no -> increment counter 2
b 2b // no -> loop
100:
ldp x1,lr,[sp],16 // restaur 2 registers
ret // return to address lr x30
/********************************************************/
/* File Include fonctions */
/********************************************************/
/* for this file see task include a file in language AArch64 assembly */
.include "../includeARM64.inc"

View file

@ -0,0 +1,6 @@
#!/usr/bin/a68g --script #
# -*- coding: utf-8 -*- #
STRING str := "12345678";
str +:= "9!";
print(str)

View file

@ -0,0 +1,3 @@
s'hello'
s,'world'
helloworld

View file

@ -0,0 +1,95 @@
/* ARM assembly Raspberry PI */
/* program appendstr.s */
/* Constantes */
.equ STDOUT, 1 @ Linux output console
.equ EXIT, 1 @ Linux syscall
.equ WRITE, 4 @ Linux syscall
.equ BUFFERSIZE, 100
/* Initialized data */
.data
szMessString: .asciz "String :\n"
szString1: .asciz "Alphabet : "
sComplement: .fill BUFFERSIZE,1,0
szString2: .asciz "abcdefghijklmnopqrstuvwxyz"
szCarriageReturn: .asciz "\n"
/* UnInitialized data */
.bss
/* code section */
.text
.global main
main:
ldr r0,iAdrszMessString @ display message
bl affichageMess
ldr r0,iAdrszString1 @ display begin string
bl affichageMess
ldr r0,iAdrszCarriageReturn @ display line return
bl affichageMess
ldr r0,iAdrszString1
ldr r1,iAdrszString2
bl append @ append sting2 to string1
ldr r0,iAdrszMessString
bl affichageMess
ldr r0,iAdrszString1 @ display string
bl affichageMess
ldr r0,iAdrszCarriageReturn
bl affichageMess
100: @ standard end of the program
mov r0, #0 @ return code
mov r7, #EXIT @ request to exit program
svc 0 @ perform system call
iAdrszMessString: .int szMessString
iAdrszString1: .int szString1
iAdrszString2: .int szString2
iAdrszCarriageReturn: .int szCarriageReturn
/******************************************************************/
/* append two strings */
/******************************************************************/
/* r0 contains the address of the string1 */
/* r1 contains the address of the string2 */
append:
push {r0,r1,r2,r7,lr} @ save registers
mov r2,#0 @ counter byte string 1
1:
ldrb r3,[r0,r2] @ load byte string 1
cmp r3,#0 @ zero final ?
addne r2,#1
bne 1b @ no -> loop
mov r4,#0 @ counter byte string 2
2:
ldrb r3,[r1,r4] @ load byte string 2
strb r3,[r0,r2] @ store byte string 1
cmp r3,#0 @ zero final ?
addne r2,#1 @ no -> increment counter 1
addne r4,#1 @ no -> increment counter 2
bne 2b @ no -> loop
100:
pop {r0,r1,r2,r7,lr} @ restaur registers
bx lr @ return
/******************************************************************/
/* display text with size calculation */
/******************************************************************/
/* r0 contains the address of the message */
affichageMess:
push {r0,r1,r2,r7,lr} @ save registers
mov r2,#0 @ counter length */
1: @ loop length calculation
ldrb r1,[r0,r2] @ read octet start position + index
cmp r1,#0 @ if 0 its over
addne r2,r2,#1 @ else add 1 in the length
bne 1b @ and loop
@ so here r2 contains the length of the message
mov r1,r0 @ address message in r1
mov r0,#STDOUT @ code to write to the standard output Linux
mov r7, #WRITE @ code call system "write"
svc #0 @ call system
pop {r0,r1,r2,r7,lr} @ restaur registers
bx lr @ return

View file

@ -0,0 +1,7 @@
# syntax: GAWK -f STRING_APPEND.AWK
BEGIN {
s = "foo"
s = s "bar"
print(s)
exit(0)
}

View file

@ -0,0 +1,8 @@
CHAR ARRAY S1,S2
Proc Main()
S1="Hello, "
S2="world!";
Sassign(S1,S2,S1(0)+1)
Print(S1)
Return

View file

@ -0,0 +1,9 @@
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Text_IO.Unbounded_Io; use Ada.Text_IO.Unbounded_IO;
procedure String_Append is
Str : Unbounded_String := To_Unbounded_String("Hello");
begin
Append(Str, ", world!");
Put_Line(Str);
end String_Append;

View file

@ -0,0 +1,3 @@
set {a, b} to {"Apple", "Script"}
set a to a & b
return a as string

View file

@ -0,0 +1,3 @@
S$ = "Hello"
S$ = S$ + " World!"
PRINT S$

View file

@ -0,0 +1,12 @@
print join ["Hello" "World"]
a: new "Hello"
'a ++ "World"
print a
b: new "Hello"
append 'b "World"
print b
c: "Hello"
print append c "World"

View file

@ -0,0 +1,4 @@
string s = "Hello";
s = s + " Wo";
s += "rld!";
write(s);

View file

@ -0,0 +1,3 @@
s := "Hello, "
s .= "world."
MsgBox % s

View file

@ -0,0 +1,3 @@
str : string := "99 bottles of ";
str ++= "beer";
Print: str;

View file

@ -0,0 +1,7 @@
Public method "_↑++=_" is
[
var : read tuple/write ⊥,
t : tuple
|
var ?= eject var ++ t;
] : ;

View file

@ -0,0 +1,4 @@
Lbl STRCAT
Copy(r₂,r₁+length(r₁),length(r₂)+1)
r₁
Return

View file

@ -0,0 +1,6 @@
a$ = "He"
a$ = a$ & "llo"
a$ = a$ + " Wo"
a$ += "rld"
a$ &= "!"
print a$

View file

@ -0,0 +1,4 @@
S$="Hello"
S$+=" World!"
PRINT S$
END

View file

@ -0,0 +1,3 @@
A$ = "Hello"
A$ = A$ & " World!"
PRINT A$

View file

@ -0,0 +1,3 @@
str="Hello";
str$(!str " World!"):?str;
out$!str;

View file

@ -0,0 +1,9 @@
#include <iostream>
#include <string>
int main( ) {
std::string greeting( "Hello" ) ;
greeting.append( " , world!" ) ;
std::cout << greeting << std::endl ;
return 0 ;
}

View file

@ -0,0 +1,9 @@
class Program
{
static void Main(string[] args)
{
string x = "foo";
x += "bar";
System.Console.WriteLine(x);
}
}

View file

@ -0,0 +1,25 @@
#include<stdio.h>
#include<string.h>
int main()
{
char str[24]="Good Morning";
char *cstr=" to all";
char *cstr2=" !!!";
int x=0;
//failure when space allocated to str is insufficient.
if(sizeof(str)>strlen(str)+strlen(cstr)+strlen(cstr2))
{
/* 1st method*/
strcat(str,cstr);
/*2nd method*/
x=strlen(str);
sprintf(&str[x],"%s",cstr2);
printf("%s\n",str);
}
return 0;
}

View file

@ -0,0 +1,23 @@
identification division.
program-id. string-append.
data division.
working-storage section.
01 some-string.
05 elements pic x occurs 0 to 80 times depending on limiter.
01 limiter usage index value 7.
01 current usage index.
procedure division.
append-main.
move "Hello, " to some-string
*> extend the limit and move using reference modification
set current to length of some-string
set limiter up by 5
move "world" to some-string(current + 1:)
display some-string
goback.
end program string-append.

View file

@ -0,0 +1,8 @@
user=> (def s "app")
#'user/s
user=> s
"app"
user=> (def s (str s "end"))
#'user/s
user=> s
"append"

View file

@ -0,0 +1,2 @@
user=> (let [s "ap", s (str s "pend")] s)
"append"

View file

@ -0,0 +1,5 @@
a = "Hello, "
b = "World!"
c = a + b
console.log c

View file

@ -0,0 +1 @@
console.log "Hello, ".concat "World!"

View file

@ -0,0 +1,4 @@
10 S$ = "HELLO"
20 S$ = S$ + " WORLD!"
30 PRINT S$
40 END

View file

@ -0,0 +1,8 @@
(defmacro concatenatef (s &rest strs)
"Append additional strings to the first string in-place."
`(setf ,s (concatenate 'string ,s ,@strs)))
(defvar *str* "foo")
(concatenatef *str* "bar")
(format T "~a~%" *str*)
(concatenatef *str* "baz" "abc" "def")
(format T "~a~%" *str*)

View file

@ -0,0 +1,7 @@
import std.stdio;
void main() {
string s = "Hello";
s ~= " world!";
writeln(s);
}

View file

@ -0,0 +1,4 @@
;Concatenate "Hello world!"
STR='Hello'
STR(%TRIM(STR)+2:5)='world'
STR(%TRIM(STR)+1:1)='!'

View file

@ -0,0 +1,38 @@
program String_append;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
TStringHelper = record helper for string
procedure Append(str: string);
end;
{ TStringHelper }
procedure TStringHelper.Append(str: string);
begin
Self := self + str;
end;
begin
var h: string;
// with + operator
h := 'Hello';
h := h + ' World';
writeln(h);
// with a function concat
h := 'Hello';
h := Concat(h, ' World');
writeln(h);
// with helper
h := 'Hello';
h.Append(' World');
writeln(h);
readln;
end.

View file

@ -0,0 +1,3 @@
var str = "foo"
str += str
print(str)

View file

@ -0,0 +1,6 @@
^|EMal has mutable strings;
|the append method changes the value in-place.
|^
text hello = "Hello, "
hello.append("world!")
writeLine(hello)

View file

@ -0,0 +1,3 @@
a$ = "hello"
a$ &= " world"
print a$

View file

@ -0,0 +1,9 @@
;; Solution from Common Lisp and Racket
(define-syntax-rule (set-append! str tail)
(set! str (string-append str tail)))
(define name "Albert") → name
(set-append! name " de Jeumont-Schneidre")
name
→ "Albert de Jeumont-Schneidre"

View file

@ -0,0 +1,10 @@
import extensions;
import extensions'text;
public program()
{
var s := StringWriter.load("Hello");
s.append:" World";
console.printLine:s.readChar()
}

View file

@ -0,0 +1,4 @@
iex(60)> s = "Hello"
"Hello"
iex(61)> s <> " World!"
"Hello World!"

View file

@ -0,0 +1,3 @@
(defvar str "foo")
(setq str (concat str "bar"))
str ;=> "foobar"

View file

@ -0,0 +1,5 @@
(require 'cl-lib)
(defvar str "foo")
(cl-callf concat str "bar")
str ;=> "foobar"

View file

@ -0,0 +1,8 @@
(let ((buf (get-buffer-create "*foo*")))
(with-current-buffer buf
(insert "foo"))
(with-current-buffer buf
(goto-char (point-max))
(insert "bar")
(buffer-string)))
;; => "foobar"

View file

@ -0,0 +1,7 @@
sequence string = "String"
printf(1,"%s\n",{string})
string &= " is now longer\n"
printf(1,"%s",{string})

View file

@ -0,0 +1,3 @@
let mutable x = "foo"
x <- x + "bar"
printfn "%s" x

View file

@ -0,0 +1 @@
"Hello, " "world!" append

View file

@ -0,0 +1,6 @@
/* Added by Aykayayciti Earl Lamont Montgomery
April 10th, 2018 */
s1, s2 = "Hello", "Foo"
> s1 + " World"
printl(s2 + " bar")

View file

@ -0,0 +1,7 @@
\ Strings in Forth are simply named memory locations
create astring 256 allot \ create a "string"
s" Hello " astring PLACE \ initialize the string
s" World!" astring +PLACE \ append with "+place"

View file

@ -0,0 +1,4 @@
ok
s" Hello " astring place ok
s" World!" astring +place ok
astring count type Hello World! ok

View file

@ -0,0 +1,10 @@
program main
character(len=:),allocatable :: str
str = 'hello'
str = str//' world'
write(*,*) str
end program main

View file

@ -0,0 +1,10 @@
program str_append
implicit none
character(len=20) :: str
str= 'String'
str(len_trim(str)+1:) = 'Append'
print *, str
end program str_append

View file

@ -0,0 +1,6 @@
' FB 1.05.0 Win64
Var s = "String"
s += " append"
Print s
Sleep

View file

@ -0,0 +1,8 @@
extends MainLoop
func _process(_delta: float) -> bool:
var string: String = "123"
string += "abc"
print(string)
return true # Exit

View file

@ -0,0 +1,7 @@
Public Sub Main()
Dim sString As String = "Hello "
sString &= "World!"
Print sString
End

View file

@ -0,0 +1,7 @@
[indent=4]
/* String append, in Genie */
init
str:string = "Hello"
str += ", world"
print str

View file

@ -0,0 +1,3 @@
var.string="This is "
var.string+="Sparta!"
debug=var.string

View file

@ -0,0 +1,2 @@
s := "foo"
s += "bar"

View file

@ -0,0 +1,13 @@
package main
import (
"fmt"
"strings"
)
func main() {
var s strings.Builder
s.WriteString("foo")
s.WriteString("bar")
fmt.Print(s.String())
}

View file

@ -0,0 +1,14 @@
// Example 1
var s = "a"
s += "b"
s += "c"
print(s)
// Example 2
print("a" + "b" + "c")
// Example 3
var a = "a"
var b = "b"
var c = "c"
print("${a}${b}${c}")

View file

@ -0,0 +1,8 @@
class Append{
static void main(String[] args){
def c="Hello ";
def d="world";
def e=c+d;
println(e);
}
}

View file

@ -0,0 +1 @@
main = putStrLn ("Hello" ++ "World")

View file

@ -0,0 +1,3 @@
100 LET S$="Hello"
110 LET S$=S$&" World!"
120 PRINT S$

View file

@ -0,0 +1,5 @@
procedure main()
s := "foo"
s ||:= "bar"
write(s)
end

View file

@ -0,0 +1,6 @@
s=: 'new'
s
new
s=: s,' value' NB. append is in-place
s
new value

View file

@ -0,0 +1 @@
String string = "abc" + "def";

View file

@ -0,0 +1,2 @@
String string = "abc";
string += "def";

View file

@ -0,0 +1 @@
String string = "abc".concat("def");

View file

@ -0,0 +1,2 @@
StringBuilder string = new StringBuilder();
string.append("abc").append("def");

View file

@ -0,0 +1,3 @@
StringBuilder string = new StringBuilder();
string.append("abc");
string.insert(3, "def");

View file

@ -0,0 +1 @@
String string = String.format("%s%s", "abc", "def");

View file

@ -0,0 +1 @@
String string = "%s%s".formatted("abc", "def");

View file

@ -0,0 +1,8 @@
String sa = "Hello";
sa += ", World!";
System.out.println(sa);
StringBuilder ba = new StringBuilder();
ba.append("Hello");
ba.append(", World!");
System.out.println(ba.toString());

View file

@ -0,0 +1,8 @@
var s1 = "Hello";
s1 += ", World!";
print(s1);
var s2 = "Goodbye";
// concat() returns the strings together, but doesn't edit existing string
// concat can also have multiple parameters
print(s2.concat(", World!"));

View file

@ -0,0 +1,5 @@
"Hello" | . += ", world!"
["Hello"] | .[0] += ", world!" | .[0]
{ "greeting": "Hello"} | .greeting += ", world!" | .greeting

View file

@ -0,0 +1 @@
"Hello" as $a | $a | . += ", world!" as $a | $a

View file

@ -0,0 +1,13 @@
/* String append, in Jsish */
var str = 'Hello';
;str += ', world';
var s2 = 'Goodbye';
;s2.concat(', World!');
/*
=!EXPECTSTART!=
str += ', world' ==> Hello, world
s2.concat(', World!') ==> Goodbye, World!
=!EXPECTEND!=
*/

View file

@ -0,0 +1,2 @@
s = "Hello"
s *= ", world!"

View file

@ -0,0 +1,4 @@
h: "hello "
h,: "world"
h
"hello world"

View file

@ -0,0 +1,11 @@
fun main(args: Array<String>) {
var s = "a"
s += "b"
s += "c"
println(s)
println("a" + "b" + "c")
val a = "a"
val b = "b"
val c = "c"
println("$a$b$c")
}

View file

@ -0,0 +1,7 @@
{def christian_name Albert}
-> christian_name
{def name de Jeumont-Schneidre}
-> name
{christian_name} {name}
-> Albert de Jeumont-Schneidre

View file

@ -0,0 +1,4 @@
$s = Hello
$s += \, World!
fn.println($s)

View file

@ -0,0 +1,3 @@
var .s = "no more "
.s ~= "foo bars"
writeln .s

View file

@ -0,0 +1,3 @@
local(x = 'Hello')
#x->append(', World!')
#x

View file

@ -0,0 +1,4 @@
a$ = "Hello"
a$ = a$ + " World"
a$ = a$ ; "!"
print a$

View file

@ -0,0 +1,4 @@
str = "Hello"
put " world!" after str
put str
-- "Hello world!"

View file

@ -0,0 +1,2 @@
local str="live"
put "code" after str

View file

@ -0,0 +1,12 @@
function string:show ()
print(self)
end
function string:append (s)
self = self .. s
end
x = "Hi "
x:show()
x:append("there!")
x:show()

View file

@ -0,0 +1,3 @@
x = "Hi "
x = x .. "there!"
print(x)

View file

@ -0,0 +1,12 @@
a="ok"
a+="(one)"
Print a
a$="ok"
a$+="(one)"
Print a$
Document b$
b$="ok"
b$="(one)"
Print b$

View file

@ -0,0 +1,3 @@
a := "Hello";
b := cat(a, " World");
c := `||`(a, " World");

View file

@ -0,0 +1,4 @@
(* mutable strings are not supported *)
s1 = "testing";
s1 = s1 <> " 123";
s1

View file

@ -0,0 +1,3 @@
(quote cons "" join) :str-append
"foo" "bar" str-append puts!

View file

@ -0,0 +1 @@
|Hello | |world!| swap + print

View file

@ -0,0 +1,3 @@
|Hello | var hello .
|world!| var world .
world hello + print

View file

@ -0,0 +1,3 @@
10 S$ = "HELLO"
20 S$ = S$ + " WORLD!"
30 PRINT S$

View file

@ -0,0 +1,4 @@
s1 = "this is"
s1 += " a test"
println s1

View file

@ -0,0 +1,7 @@
/**
<doc><p>String append in Neko</pre></doc>
**/
var str = "Hello"
str += ", world"
$print(str, "\n")

View file

@ -0,0 +1,3 @@
s_ = 'Hello'
s_ = s_', world!'
say s_

View file

@ -0,0 +1,7 @@
(setq str "foo")
(push "bar" str -1)
; or as an alternative introduced in v.10.1
(extend str "bar")
(println str)

Some files were not shown because too many files have changed in this diff Show more