我正在研究JavaScript代碼,顯示帶有混合阿拉伯文,數字和英文單詞的字符串。該代碼替換字符串「##」一個號碼,如下,
如何正確地將數字與混合的阿拉伯文和英文字符串
" بون شاسع ##mi".replace("##",123)
我希望結果是(數字「123」是完全阿拉伯語字符前「MI」和後):
不過,我總是得到以下結果(數字 「123」 被意外地放在阿拉伯語字符前),
那麼,任何人都可以告訴我如何得到這個想要的結果嗎?
我正在研究JavaScript代碼,顯示帶有混合阿拉伯文,數字和英文單詞的字符串。該代碼替換字符串「##」一個號碼,如下,
如何正確地將數字與混合的阿拉伯文和英文字符串
" بون شاسع ##mi".replace("##",123)
我希望結果是(數字「123」是完全阿拉伯語字符前「MI」和後):
不過,我總是得到以下結果(數字 「123」 被意外地放在阿拉伯語字符前),
那麼,任何人都可以告訴我如何得到這個想要的結果嗎?
由於文本是阿拉伯文,它使用從右到左的方向。但是,當您將數字與您希望從左到右顯示的數字混用時,事情會變得棘手。
這可以使用\u200E
固定,該值代表從左到右標記字符。這是一個不可見的字符,它向文本渲染器指示後面的內容應該在該方向上呈現,而不管正常的規則會提示什麼。
您可以添加標記爲.replace
調用的一部分,就像這樣:
"بون شاسع##mi".replace("##","\u200E"+123)
這裏是控制檯輸出的比較,沒有與標記:
如果在第一個##之前加上\ u200E,我可以得到想要的結果。但是,如果\ u200E在第二個##之前添加,則「123」將成爲行的第一個字符。你知道原因嗎? –
什麼「秒'##'」? –
第一個「##」在「mi」之前。第二個「##」在「replace(」)之後。 –
嘗試在##之前加上'\ u200E'(你可以將它作爲替換的一部分)。從左到右的標記應該有助於解決問題。 –
@NiettheDarkAbsol,你能否說明爲什麼在##之前添加\ u200E才能解決問題?謝謝。 –
'\ u200E'是從左到右的標記字符。這是一個看不見的字符,它告訴文本渲染器後面的內容應該朝這個方向渲染 - 現在,它將按阿拉伯文本使用的從右向左的方向編號。 –