In Javascript arabische Zahlen in persische übersetzen
Hallo zusammen,
ich bräuchte einmal Hilfe in Javascript.
Folgender Code macht aus 123 (arabische Zahlen) persische Zahlen (۱۲۳).
Soweit so gut. Ich bräuchte das jedoch auch genau anders herum.
Ich hätte nun gedacht, dass im Code einfach die Zahlen auszutauschen, aber die arabischen Zahlen sind hier gar nicht drin. Ein dennoch absolvierter Versuch scheiterte kläglich.
Ich wäre sehr dankbar, wenn jemand kurz zeigt, wie man aus 123 usw. dann ۱۲۳ usw. macht.
Danke und Gruß
Jensen
ich bräuchte einmal Hilfe in Javascript.
Folgender Code macht aus 123 (arabische Zahlen) persische Zahlen (۱۲۳).
Soweit so gut. Ich bräuchte das jedoch auch genau anders herum.
Ich hätte nun gedacht, dass im Code einfach die Zahlen auszutauschen, aber die arabischen Zahlen sind hier gar nicht drin. Ein dennoch absolvierter Versuch scheiterte kläglich.
myNumber = '123';
myNumber= myNumber.replace(/[٠-٩]/g, d => \"۰۱۲٣٤٥٦٧٨٩\".indexOf(d)).replace(/[۰-۹]/g, d => \"۰۱۲۳۴۵۶۷۸۹\".indexOf(d));
Ich wäre sehr dankbar, wenn jemand kurz zeigt, wie man aus 123 usw. dann ۱۲۳ usw. macht.
Danke und Gruß
Jensen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 621928
Url: https://administrator.de/contentid/621928
Ausgedruckt am: 24.11.2024 um 21:11 Uhr
3 Kommentare
Neuester Kommentar
du gehst zu einfach an die Sache ran
erstens, was für ein Variablentyp ist das eigentlich? Das schreibst du garnicht.
zweitens es kann an allen möglichen Stellen Konvertierungsprobleme geben...
deshalb escapet man sowas.
https://www.educative.io/edpresso/how-to-insert-unicode-in-javascript
drittens benötigt so ein String am Anfang in den meisten Fällen zusätzlich den Unicode für "Schreibrichtung von rechts nach links wechseln" und am Ende des Strings wieder einen "Schreibrichtung links nach rechts wechseln" ansonsten kriegst du unter Umständen spiegelverkehrte Schrift, hatten wir schon in einer anderen Software.
wird hier näher erklärt:
ttps://www.w3.org/International/tutorials/bidi-xhtml/index.de
drittens du mußt den passenden Font verwenden, nicht alle Fonts haben alle Schriften
erstens, was für ein Variablentyp ist das eigentlich? Das schreibst du garnicht.
zweitens es kann an allen möglichen Stellen Konvertierungsprobleme geben...
deshalb escapet man sowas.
https://www.educative.io/edpresso/how-to-insert-unicode-in-javascript
drittens benötigt so ein String am Anfang in den meisten Fällen zusätzlich den Unicode für "Schreibrichtung von rechts nach links wechseln" und am Ende des Strings wieder einen "Schreibrichtung links nach rechts wechseln" ansonsten kriegst du unter Umständen spiegelverkehrte Schrift, hatten wir schon in einer anderen Software.
wird hier näher erklärt:
ttps://www.w3.org/International/tutorials/bidi-xhtml/index.de
drittens du mußt den passenden Font verwenden, nicht alle Fonts haben alle Schriften
Würde dir auch empfehlen hier Escape Sequenzen zu benutzen, du könntest die zahlen in UTF 8 konvertieren und dann aus der UTF8 Tabelle die Araischen Zahlen herraussuchen, danach jede dieser Zahlen mit dem passenden Persischen UTF 8 String ersetzen.
Hiermit scheitn es bei mir zu funktionieren:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript Replace Character in a String</title>
<script>
function strReplace(){
myNumber = '123';
myNumber = myNumber.replace(/0/g, "۰");
myNumber = myNumber.replace(/1/g, "۱");
myNumber = myNumber.replace(/2/g, "۲");
myNumber = myNumber.replace(/3/g, "۳");
myNumber = myNumber.replace(/4/g, "۴");
myNumber = myNumber.replace(/5/g, "۵");
myNumber = myNumber.replace(/6/g, "۶");
myNumber = myNumber.replace(/7/g, "۷");
myNumber = myNumber.replace(/8/g, "۸");
myNumber = myNumber.replace(/9/g, "۹");
document.getElementById("myText").innerHTML = myNumber;
}
</script>
</head>
<body>
<p id="myText">quick_brown_fox</p>
<button type="button" onclick="strReplace();">Replace</button>
</body>
</html>
HINWEIS: Damit dies funktioniert muss der output vom Browser als UTF-8 Codiert werden
Wenn der Output String reversed werden muss, weil persisch in der anderen Richtung gelesen wird (hab keine ahnung) dann sollte eine funktion die den finalen wert "reversed" reichen, etwa etwas wie dies hier:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript Replace Character in a String</title>
<script>
function strReplace(){
myNumber = '123';
myNumber = myNumber.replace(/0/g, "۰");
myNumber = myNumber.replace(/1/g, "۱");
myNumber = myNumber.replace(/2/g, "۲");
myNumber = myNumber.replace(/3/g, "۳");
myNumber = myNumber.replace(/4/g, "۴");
myNumber = myNumber.replace(/5/g, "۵");
myNumber = myNumber.replace(/6/g, "۶");
myNumber = myNumber.replace(/7/g, "۷");
myNumber = myNumber.replace(/8/g, "۸");
myNumber = myNumber.replace(/9/g, "۹");
var newString = "";
for (var i = myNumber.length - 1; i >= 0; i--) {
newString += myNumber[i];
}
document.getElementById("myText").innerHTML = newString;
}
</script>
</head>
<body>
<p id="myText">quick_brown_fox</p>
<button type="button" onclick="strReplace();">Replace</button>
</body>
</html>
Hiermit scheitn es bei mir zu funktionieren:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript Replace Character in a String</title>
<script>
function strReplace(){
myNumber = '123';
myNumber = myNumber.replace(/0/g, "۰");
myNumber = myNumber.replace(/1/g, "۱");
myNumber = myNumber.replace(/2/g, "۲");
myNumber = myNumber.replace(/3/g, "۳");
myNumber = myNumber.replace(/4/g, "۴");
myNumber = myNumber.replace(/5/g, "۵");
myNumber = myNumber.replace(/6/g, "۶");
myNumber = myNumber.replace(/7/g, "۷");
myNumber = myNumber.replace(/8/g, "۸");
myNumber = myNumber.replace(/9/g, "۹");
document.getElementById("myText").innerHTML = myNumber;
}
</script>
</head>
<body>
<p id="myText">quick_brown_fox</p>
<button type="button" onclick="strReplace();">Replace</button>
</body>
</html>
HINWEIS: Damit dies funktioniert muss der output vom Browser als UTF-8 Codiert werden
Wenn der Output String reversed werden muss, weil persisch in der anderen Richtung gelesen wird (hab keine ahnung) dann sollte eine funktion die den finalen wert "reversed" reichen, etwa etwas wie dies hier:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript Replace Character in a String</title>
<script>
function strReplace(){
myNumber = '123';
myNumber = myNumber.replace(/0/g, "۰");
myNumber = myNumber.replace(/1/g, "۱");
myNumber = myNumber.replace(/2/g, "۲");
myNumber = myNumber.replace(/3/g, "۳");
myNumber = myNumber.replace(/4/g, "۴");
myNumber = myNumber.replace(/5/g, "۵");
myNumber = myNumber.replace(/6/g, "۶");
myNumber = myNumber.replace(/7/g, "۷");
myNumber = myNumber.replace(/8/g, "۸");
myNumber = myNumber.replace(/9/g, "۹");
var newString = "";
for (var i = myNumber.length - 1; i >= 0; i--) {
newString += myNumber[i];
}
document.getElementById("myText").innerHTML = newString;
}
</script>
</head>
<body>
<p id="myText">quick_brown_fox</p>
<button type="button" onclick="strReplace();">Replace</button>
</body>
</html>