首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java字符串错误顺序连接不同语言

Java字符串错误顺序连接不同语言
EN

Stack Overflow用户
提问于 2015-10-19 15:25:09
回答 2查看 3.5K关注 0票数 10

所以,你可以从图像中看到,我把a,c和b连在一起,我得到了我期望的结果。但是在第二次印刷中,当我连接a,e和b时,我最终得到了e,而不是我所期望的地方。我想知道,这种行为的原因和解决办法。提前谢谢你。

代码语言:javascript
复制
import java.util.*;
public class prob 
{
    public static void main(String... args)
    {
        String a="الف",b="1/2",c="ب",e="B";

        System.out.println(a+" : "+c+" : "+b);
        System.out.println(a+" : "+e+" : "+b);
    }
}

编辑(解释为什么我的问题不是重复的):我的问题是如何将L2R语言转换为R2L。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-19 15:33:45

这是因为第一个字符是R2L (在亚洲语言中是从右向左的方向),所以下一个字符在开头(正确的方向):

第一季度:

代码语言:javascript
复制
الف 
// actual orientation ←

加在L处的第二个焦炭

代码语言:javascript
复制
// add ←
B : الف 
// actual orientation →

在此之后,B和欧洲一样是L2R,所以在B后面添加下一个字符(1/2)的方向是正确的:

代码语言:javascript
复制
// → add in this direction
B : 1/2 : الف 
// actual orientation → (still)

您可以轻松地通过复制、粘贴字符和手动写来测试它,您将看到方向的变化取决于您插入的字符。

更新:

我对这个问题的解决方案是什么,因为我做这个示例只是为了说明我在做一些大型报告时所面临的问题,在这些报告中,数据有时是混合的,有时是L2R字符串,有时是R2L。我想严格地用这种格式做一个字符串。

来自这个答案

  • 左向右嵌入(U+202A)
  • 右向左嵌入(U+202B)
  • Pop方向格式化(U+202C)

因此,在java中,要将像阿拉伯语这样的RTL语言嵌入到LTR语言(如英语)中,您可以这样做。

代码语言:javascript
复制
myEnglishString + "\u202B" + myArabicString + "\u202C" + moreEnglish

做相反的事

代码语言:javascript
复制
myArabicString + "\u202A" + myEnglishString + "\u202C" + moreArabic

见(来源材料)

  • 双向通用格式获得更多详细信息,
  • Unicode规范中关于“定向格式代码”的章节

加法2:

代码语言:javascript
复制
char l2R = '\u202A';
System.out.println(l2R + a + " : " + e +" : "+b);

输出:

代码语言:javascript
复制
‪الف : B : 1/2
票数 13
EN

Stack Overflow用户

发布于 2015-10-19 15:38:03

正如在这个回答中已经说过的,原因是一些字符串有一个从右到左的方向。

您可以使用\u200e control character手动将字符串的方向设置为从右到左的从右到右的方向,例如:

代码语言:javascript
复制
String a="\u200eالف",b="1/2",c="\u200eب",e="B";

System.out.println(a+" : "+c+" : "+b);
System.out.println(a+" : "+e+" : "+b);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33218234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档