Binary strings: Difference between revisions
Content added Content deleted
(Add Ecstasy example) |
|||
Line 1,111: | Line 1,111: | ||
# value: [1, 2, 3, -127, 2, 3].diverge()</syntaxhighlight> |
# value: [1, 2, 3, -127, 2, 3].diverge()</syntaxhighlight> |
||
</li></ol> |
</li></ol> |
||
=={{header|Ecstasy}}== |
|||
<syntaxhighlight lang="java"> |
|||
module BinaryStrings |
|||
{ |
|||
@Inject Console console; |
|||
void run() |
|||
{ |
|||
Byte[] mutableBytes = new Byte[]; // growable and mutable string of bytes |
|||
Byte[] fixedLength = new Byte[10]; // fixed length string of bytes (all default to 0) |
|||
Byte[] literal = [0, 1, 7, 0xff]; // a "constant" string of bytes |
|||
console.println($|String creation and assignment: |
|||
| mutableBytes={mutableBytes} |
|||
| fixedLength={fixedLength} |
|||
| literal={literal} |
|||
| |
|||
); |
|||
console.println($|Check if a string is empty: |
|||
| mutableBytes.empty={mutableBytes.empty} |
|||
| fixedLength.empty={fixedLength.empty} |
|||
| literal.empty={literal.empty} |
|||
| |
|||
); |
|||
mutableBytes += 0; // add a byte (using an operator) |
|||
mutableBytes.add(1); // add a byte (using the underlying method) |
|||
mutableBytes.addAll(#07FF); // add multiple bytes (using the underlying method) |
|||
console.println($|Append a byte to a string: |
|||
| mutableBytes={mutableBytes} |
|||
| |
|||
); |
|||
console.println($|String comparison: |
|||
| mutableBytes==literal = {mutableBytes==literal} |
|||
| fixedLength==literal = {fixedLength==literal} |
|||
| |
|||
); |
|||
fixedLength = new Byte[4](i -> literal[i]); // create/copy from literal to fixedLength |
|||
val clone = fixedLength.clone(); // clone the array |
|||
console.println($|String cloning and copying: |
|||
| fixedLength={fixedLength} |
|||
| clone={clone} |
|||
| |
|||
); |
|||
console.println($|Extract a substring from a string: |
|||
| mutableBytes[1..2]={mutableBytes[1..2]} |
|||
| fixedLength[0..2]={fixedLength[0..2]} |
|||
| literal[2..3]={literal[2..3]} |
|||
| |
|||
); |
|||
for (Int start = 0; Int index := fixedLength.indexOf(0x01, start); start = index) |
|||
{ |
|||
fixedLength[index] = 0x04; |
|||
} |
|||
console.println($|Replace every occurrence of a byte in a string with another string: |
|||
| fixedLength={fixedLength} |
|||
| |
|||
); |
|||
for (Int start = 0; Int index := mutableBytes.indexOf(#0107, start); start = index) |
|||
{ |
|||
mutableBytes.replaceAll(index, #9876); |
|||
} |
|||
console.println($|Replace every occurrence of a string in a string with another string: |
|||
| mutableBytes={mutableBytes} |
|||
| |
|||
); |
|||
console.println($|Join strings: |
|||
| mutableBytes+fixedLength+literal={mutableBytes+fixedLength+literal} |
|||
| |
|||
); |
|||
} |
|||
} |
|||
</syntaxhighlight> |
|||
Output: |
|||
<syntaxhighlight> |
|||
String creation and assignment: |
|||
mutableBytes=0x |
|||
fixedLength=0x00000000000000000000 |
|||
literal=0x000107FF |
|||
Check if a string is empty: |
|||
mutableBytes.empty=True |
|||
fixedLength.empty=False |
|||
literal.empty=False |
|||
Append a byte to a string: |
|||
mutableBytes=0x000107FF |
|||
String comparison: |
|||
mutableBytes==literal = True |
|||
fixedLength==literal = False |
|||
String cloning and copying: |
|||
fixedLength=0x000107FF |
|||
clone=0x000107FF |
|||
Extract a substring from a string: |
|||
mutableBytes[1..2]=0x0107 |
|||
fixedLength[0..2]=0x000107 |
|||
literal[2..3]=0x07FF |
|||
Replace every occurrence of a byte in a string with another string: |
|||
fixedLength=0x000407FF |
|||
Replace every occurrence of a string in a string with another string: |
|||
mutableBytes=0x009876FF |
|||
Join strings: |
|||
mutableBytes+fixedLength+literal=0x009876FF000407FF000107FF |
|||
</syntaxhighlight> |
|||
=={{header|Elixir}}== |
=={{header|Elixir}}== |
||
Note: Elixir data types are immutable. |
Note: Elixir data types are immutable. |