Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
@Merle254: Du musst halt Code schreiben der das macht was Du haben willst. Also beispielsweise eine Schleife die immer 3 Zeichen betrachtet und die durch ein Zeichen ersetzt und in einer Liste sammelt die am Ende mit der `join()`-Methode auf Zeichenketten zu einer neuen Zeichenkette zusammengesetzt wird.
Statt einer Liste könnte man das auch leicht als Generatorausdruck schreiben, den man direkt als Argument an die `join()`-Methode übergibt.
Für die Abbildung von drei Zeichen auf eines wäre ein Wörterbuch (`dict`) geeignet.
Dann müsste man noch spezifizieren was passieren soll wenn drei Zeichen vorkommen für die es keine Abbildung auf ein Zeichen gibt, und das entsprechend im Code berücksichtigen.
@Sirius: Ist halt die Frage was bei "xabcde" passieren soll, also ob die dreibuchstabigen Kombinationen *irgendwo* in der Zeichenkette stehen dürfen oder immer nur an einem durch 3 teilbaren Index anfangen dürfen.
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan
#!/bin/bash
declare -A Mapping=([abc]=1 [def]=8 [ghi]=9)
Replace() {
local string=$1
local result=''
for (( i = 0; i < ${#string}; i += 3 )); do
result="$result${Mapping[${string:i:3}]}"
done
echo "$result"
}
Main() {
Replace abcdefghi
Replace defabcghi
}
[[ "${BASH_SOURCE[0]}" == "$0" ]] && Main
Hier werden Buchstabenkombinationen die nicht in der Abbildung vorkommen, einfach durch nichts ersetzt, und falls die Länge der Zeichenkette nicht durch 3 teilbar ist, werden zusätzlich ein oder zwei Zeichen am Ende einfach ignoriert. Da ist dann wieder die Frage was soll in solchen Fällen tatsächlich passieren.
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan