我使用IntelliJ 12 IDE在java(android)中使用\\|
分割以下字符串。Java分割給予阿拉伯字符的相反順序
一切,除了最後一部分罰款,不知何故分割挑選他們以相反的順序:
正如你可以看到真正的定位34,35,36
是正確的,並根據該字符串,但當它被挑出split part no 5
其錯誤的順序,36,35,34
...
任何方式,我可以讓他們按正確的順序?
我的代碼:
public ArrayList<Book> getBooksFromDatFile(Context context, String fileName)
{
ArrayList<Book> books = new ArrayList<Book>();
try
{
// load csv from assets
InputStream is = context.getAssets().open(fileName);
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null)
{
String[] RowData = line.split("\\|");
books.add(new Book(RowData[0], RowData[1], RowData[2], RowData[3], RowData[4], RowData[5]));
}
}
catch (IOException ex)
{
Log.e(TAG, "Error parsing csv file!");
}
finally
{
try
{
is.close();
}
catch (IOException e)
{
Log.e(TAG, "Error closing input stream!");
}
}
}
catch (IOException ex)
{
Log.e(TAG, "Error reading .dat file from assets!");
}
return books;
}
你確定字符34,35和36的真實位置是正確的嗎?如果該子串應該表示「1到7」,那麼'1'是不是應該位於34位置,'7'應該位於36位置? – VGR
VGR,是的,但記住它的阿拉伯語,所以它的權利從左到右,即使是數字。所以36是第一個用阿拉伯語讀的東西。當我在正常的TextView中顯示它而沒有任何特殊的RTL設置時,我希望它看起來正確。 – sprocket12
從右到左的字符是*從*到左的字符,但在字符串中,它們總是按語言順序排列。字符不應該以相反的順序放置在字符串中,以便從右向左渲染;渲染引擎會照顧到這一點。無論是在左側還是在右側,第一個字符都是'1'。 – VGR