0

我正在\\|使用 IntelliJ 12 IDE 在 java (android) 中拆分以下字符串。

在此处输入图像描述

除了最后一部分,一切都很好,不知何故,拆分以相反的顺序将它们捡起来:

在此处输入图像描述

正如您所看到的,真正的定位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;
}
4

2 回答 2

1

字符串中的字符应始终按语言顺序排列,无论它们是从右到左还是从左到右。所以我们应该看到 [34] = '١', [35] = '-', [36] = '٧'。渲染引擎可以使用正确的从右到左或从左到右的布局来显示它们。

于 2013-11-10T15:50:39.150 回答
0

在 Unicode 世界中,有强字符和弱字符。这些是弱字符的列表:

 "\\", "/", "+", "-", "=", ";", "$" 

它们被称为“弱”字符,因为它们不包含任何方向信息。所以由软件决定这些“弱”字符将被放置在哪个方向,更多信息在这里。要解决此问题,您需要设置Directional Formatting,例如:

RightToLeftEmbedding + weakCharacter + PopDirectionalFormatting

使用这些常数值

 char RightToLeftEmbedding = (char)0x202B;
 char PopDirectionalFormatting = (char)0x202C;
于 2013-11-10T06:24:10.407 回答