這是一個非常有趣的問題。我決定更多地使用它,是的,我可以在這裏複製你的問題。我的是*
不是阿拉伯語文本,因此它不適用於它的語言格式。
這裏是我的測試: -
@Test
public void testArabicLanguage() {
// arabic
assertThat(toArabicLanguage("قضاة وحقوقيون يكشفون "), is("22.1.قضاة وحقوقيون يكشفون "));
// english
assertThat(toArabicLanguage("hey"), is("22.1.hey"));
// chinese
assertThat(toArabicLanguage("現在進入"), is("22.1.現在進入"));
// symbol
assertThat(toArabicLanguage("*"), is("22.1.*"));
}
private String toArabicLanguage(String navText) {
String s = String.format(new Locale("ar", "DZ"), "%d.%d.%s", 22, 1, navText);
System.out.println(s);
return s;
}
當我執行上面的測試,一切都過去了。
但是,當我直接在IntelliJ中查看控制檯打印輸出和測試時,我看到從右向左顯示的阿拉伯語文本。
每當我在這裏複製並粘貼文本時,它總是顯示從左到右。
這裏的控制檯打印: -
22.1.قضاة وحقوقيون يكشفون
22.1.hey
22.1.現在進入
22.1.*
現在,比較,爲我在的IntelliJ看到,顯示阿拉伯文字從右到左,而不是: -
UPDATE
如果你全部首先想要的是始終顯示navText
,您可以使用language-detection庫來這樣做。這個圖書館似乎需要jsonic圖書館才能正常工作......是的,我知道它是日文的,而且我自己也不讀日文......只是找到jsonic 1.3 (1.3.0)
並下載它。
有了這個,你可以做這樣的事情: -
public class MyTest {
// language-detection zip file comes with a `profile` dir... just point to it.
@Before
public void setup() {
try {
DetectorFactory.loadProfile("/path/to/language-detection/profiles");
}
catch (LangDetectException e) {
fail("Can't locate the language profiles");
}
}
@Test
public void testArabicLanguage() {
// arabic
assertThat(toArabicLanguage("قضاة وحقوقيون يكشفون "), is("22.1.قضاة وحقوقيون يكشفون "));
// english
assertThat(toArabicLanguage("hey"), is("hey.22.1"));
// chinese
assertThat(toArabicLanguage("現在進入"), is("現在進入.22.1"));
// symbol
assertThat(toArabicLanguage("*"), is("*.22.1"));
}
private String toArabicLanguage(String navText) {
boolean isArabicLanguage = false;
try {
Detector detector = DetectorFactory.create();
detector.append(navText);
isArabicLanguage = detector.detect().equals("ar");
}
catch (LangDetectException e) {
// `*` will throw this exception:-
// "com.cybozu.labs.langdetect.LangDetectException: no features in text"
//
// so, just catch it and treat it as non-Arabic language.
}
if (isArabicLanguage) {
return String.format(new Locale("ar", "DZ"), "%d.%d.%s", 22, 1, navText);
}
else {
return String.format("%s.%d.%d", navText, 22, 1);
}
}
}
請記住這個解決方案是有點矯枉過正,而且可能對非阿拉伯語意想不到的副作用。
在其他阿拉伯文字它工作正常。 arWord.25.3但只有當文本是*它看起來像這樣。 – MSaudi
是'navText'星號嗎? –
是的。如果是星號,則會出現此問題。任何其他單詞都可以正常工作 – MSaudi