Android - 连接两种不同的语言字符串

时间:2015-05-10 05:51:51

标签: android string append stringbuilder multilingual

我找不到这个“简单”行动的解决方案:

我正在尝试附加2个字符串以获取完整的文件路径(文件夹和文件名):

String a = /storage/emulated/0/abc/לכ /
 这有非英文字母和

String b = 20141231_042822.jpg

String c = a + b

结果:

/storage/emulated/0/abc/לכ/20141231_042822.jpg

(也尝试使用StringBuilder)

2 个答案:

答案 0 :(得分:1)

尝试使用BidiFormatter

example

private static String text = "%s הוא עסוק";
private static String phone = "+1 650 253 0000";

String wrappedPhone = BidiFormatter.getInstance(true /* rtlContext */).unicodeWrap(phone);
String formattedText = String.format(text, wrappedPhone);

答案 1 :(得分:0)

使用char[]代替,并使用此方法逐个添加:

public char[] generatePath(String a, String b){
    if(a==null || b==null)
        return null;

    char[] result = new char[a.length() +b.length()];

    for(int i=0;i<a.length();i++)
       result[i]=a.charAt(i);

    for(int i=a.length();i<a.length()+b.length();i++)
       result[i]=a.charAt(i);

    return result;
}

这将确保每个角色都在正确的位置。

  Java中的

String个对象没有编码(*)。

     

唯一具有编码的是byte[]。所以如果你需要的话   UTF-8数据,那么您需要byte[]。如果您有String   包含意外数据,然后问题是在某些较早的地方   将一些二进制数据错误地转换为String(即它是   使用错误的编码)。

     

(*)这并不完全准确。实际上他们有编码,但是   这个UTF-16并且无法修改。   来源:answer

您需要做的是使用Byte[]而不是String

尝试this

Charset.forName("UTF-8").encode(myString);

this

byte[] ptext = String.getBytes("UTF-8");