java根据库尔德字符排序字符串数组

Maz*_*ğan 5 java arrays sorting

有没有通过库尔德字符对字符串数组进行排序的简短方法?我在互联网上看了一些来源,但我找不到任何解决方案.有一种方法可以排序.编写类似于小说的代码,但这是一项非常漫长的工作.

库尔德字符:a,b,c,ç,d,e,ê,f,g,h,i,î,j,k,l,m,n,o,p,q,r,s,ş,t ,U,U,v,W,X,Y,Z

iva*_*sim 6

校书郎类应该进来,方便在这里.引用文档,

Collat​​or类执行区分区域敏感的String比较.您可以使用此类为自然语言文本构建搜索和排序例程.

所以尝试这样的事情:

Collator unicodeCollator = Collator.getInstance(Locale.UNICODE_LOCALE_EXTENSION);
Collections.sort(yourListOfCharacters, unicodeCollator);
Run Code Online (Sandbox Code Playgroud)

请注意,我们可以java.util.Collections.sort像上面那样直接调用,因为Collat​​or实现了Comparator接口.

如果由于某种原因Locale.UNICODE_LOCALE_EXTENSION不起作用,这里是支持的语言环境完整列表.您可以使用Locale构造函数创建自己的区域设置.


Maz*_*ğan 0

我已经解决了我的问题:我的文件内容是这样的:

\n\n
\n

*N\xc3\xaezamett\xc3\xaen Ari\xc3\xa7 - Karde\xc5\x9f T\xc3\xbcrk\xc3\xbcler - Rojek T\xc3\xaa
\n B\xc3\xaa xem b\xc3\xaa \xc5\x9fer welat azad rojek t\xc3\xaa\n Rojek ronah\xc3\xae rojek bi\xc5\x9fah\xc3\xae rojek t\xc3\xaa\n

Roj Roja me ye....
\n *Koma \xc3\x87iya - Tolhildan ^ Daketine Meydan\xc3\xaa
\n Daketine meydan\xc3\xaa gerilay\xc3\xaan d\xc3\xaenem\xc3\xaar
\n Ji bona tolhildan\xc3\xaa wek baz \xc3\xbb打桩 \xc3\xbb \xc5\x9f\xc3\xaar
...

\n
\n\n

我的解决方案: th\xc3\xaes 字母适合 toLowerCase 函数:

\n\n
\n

ABC\xc3\x87DE\xc3\x8aFG\xc4\x9eH\xc4\xb0\xc3\x8eJKLMNO\xc3\x96PQRS\xc5\x9eT\xc3\x9bU\xc3\x9cVWXYZ

\n
\n\n

只是有问题。因为土耳其语的小写(I)是\xc4\xb1;但对于库尔德人来说是i

\n\n

代码:

\n\n
in onCreate():\n...\nalfabetBike();\n...\npublic static void alfabetBike() {\n    for (int i = 0; i < tips.length(); i++) {\n        String[] derbasi_arr = sernavs[i];\n        String[] derbasi_got = gotins[i];\n        for (int j = 0; j < hejmar[i] - 1; j++) {\n            int indeks = j;\n            String yaMezin = derbasi_arr[j];\n            for (int k = j + 1; k < hejmar[i]; k++) {\n                if (compareTwoString(yaMezin.substring(1), derbasi_arr[k].substring(1)) > 1) {\n                    yaMezin = derbasi_arr[k];\n                    indeks = k;\n                }\n            }\n            if (indeks != j) {\n                derbasi_arr[indeks] = derbasi_arr[j];\n                String derbasi = derbasi_got[indeks];\n                derbasi_got[indeks] = derbasi_got[j];\n                derbasi_arr[j] = yaMezin;\n                derbasi_got[j] = derbasi;\n            }\n        }\n        gotins[i] = derbasi_got;\n        sernavs[i] = derbasi_arr;\n    }\n}\n\nprivate static void printFile(){\n    alfabetBike();\n    File root = android.os.Environment.getExternalStorageDirectory();\n    File dir = new File (root.getAbsolutePath() + "/alfabetfolder");\n    dir.mkdirs();\n    File file = new File(dir, "alfabet_title.txt");\n    File file2 = new File(dir, "alfabet.txt");\n\n    try {\n        FileOutputStream f = new FileOutputStream(file,false);\n        PrintWriter pw = new PrintWriter(f);\n        FileOutputStream f2 = new FileOutputStream(file2,false);\n        PrintWriter pw2 = new PrintWriter(f2);\n\n        for (int i = 0; i < tips.length(); i++) {\n            for (int j = 0; j < hejmar[i]; j++) {\n                Log.d("ssdddddd", "add" + hejmar[i] + "-" + j + "  " + sernavs[i][j].trim());\n                pw.println(sernavs[i][j]);\n                pw.flush();\n                pw2.println(sernavs[i][j]  + "\\n" + gotins[i][j].trim());\n                pw2.flush();\n            }\n        }\n        pw.close();\n        f.close();\n    } catch (FileNotFoundException e) {\n        e.printStackTrace();\n        Log.i("erroooor", "******* File not found. Did you" +\n                " add a WRITE_EXTERNAL_STORAGE permission to the   manifest?");\n    } catch (IOException e) {\n        e.printStackTrace();\n    }\n}\n\npublic static int compareTwoString(String yek, String du) {\n    String d1 = yek, d2 = du;\n    d1 = strLower(d1, d1.charAt(0));\n    d2 = strLower(d2, d2.charAt(0));\n    int length, yaDirej;\n\n    if (yek.length() > du.length()) {\n        yaDirej = 1;\n        length = yek.length();\n    } else if (yek.length() < du.length()) {\n        yaDirej = 2;\n        length = du.length();\n    } else {\n        yaDirej = 0;\n        length = yek.length();\n    }\n\n    for (int i = 0; i < length; i++) {\n        int id1 = -1, id2 = -1;\n        if (i == d1.length() || i == du.length()) {\n            return yaDirej;\n        }\n        for (int j = 0; j < tips.length(); j++) {\n            if (d1.charAt(i) == tips.charAt(j)) id1 = j;\n            if (d2.charAt(i) == tips.charAt(j)) id2 = j;\n        }\n        if (id1 > id2)\n            return 2;\n        else if (id2 > id1)\n            return 1;\n        else\n            continue;\n    }\n    return 0;\n}\n\npublic static String strLower(String str, char ziman){\n    final StringBuilder mutable = new StringBuilder(str);\n    final StringBuilder yedek = new StringBuilder(str.toLowerCase());\n    for (int i = 0; i < str.length(); i++) {\n        if (ziman == \'?\' && mutable.charAt(i) == \'I\')\n            mutable.setCharAt(i, \'i\');\n        else if (ziman == \'*\' && mutable.charAt(i) == \'I\')\n            mutable.setCharAt(i, \'\xc4\xb1\');\n        else mutable.setCharAt(i,yedek.charAt(i));\n    }\n    return mutable.toString();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:
\nin AndroidManifest.xml

\n\n
<manifest...>\n<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />\n....\n</manifest...>\n
Run Code Online (Sandbox Code Playgroud)\n