将两个字符串组合成不同的语言RTL& LTR

时间:2016-08-09 10:21:20

标签: ios nsstring localized

我有两个文本,一个用希伯来语,一个用英语。

在第一篇文章中,我的日期是希伯来语。

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSLocale *hebrew = [[NSLocale alloc] initWithLocaleIdentifier:@"he_IL"]; // Hebrew

    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZ"];

    NSDate *date = [dateFormatter dateFromString:model.startDate];

    NSLog(@"%@", date);

    [dateFormatter setDateFormat:@"EEEE,dd.MM.yyyy"];
    dateFormatter.locale = hebrew;
    NSString *strDate = [dateFormatter stringFromDate:date];

并且开始日期是:יוםשישי,19.08.2016 in NString object strDate

另一方面,我在NSString对象timeForRequest中有 07:00-16:00 文本

我需要的格式是יוםשני,15.01.2016 | 16:00 - 07:00

当我尝试使用以下代码

[NSString stringWithFormat:@"%@ | %@",strDate,timeForRequest]
它显示我是这样的:יוםשישי,19.08.2016 | 07:00-16:00

观察时间不对,请帮我从这种有线情况出来。

提前致谢。

2 个答案:

答案 0 :(得分:3)

我很确定这里的问题是strDate中的希伯来日期带有unicode字符,使其从右向左显示。当与普通'相结合时,这会造成混乱。 timeForResponse中从左到右的字符串。日期格式化程序正在从希伯来语语言环境中选择它。

试试这个:

  1. 将日期格式字符串更改为
  2. [dateFormatter setDateFormat:@"dd.MM.yyyy,EEEE"];

    1. 将格式的字符串更改为
    2. NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];

      0x200E unicode字符是不可见的,但会将渲染放回到从左到右的模式。

      在上述之后,这是我得到的输出:

      07: 00-16: 00 | 17.08.2016,יום רביעי

答案 1 :(得分:1)

我只需要从Debug更改为Release并安装Release .exe,现在这两个服务都在运行并且没有任何问题