结合两种语言文本RTL和LTR
我有两个文本,一个用希伯来语,一个用英语。
在第一篇文章中,我的日期是希伯来语。
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在NString对象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
观察时间不对,请帮我从这种有线情况出来。
提前致谢。
我很确定这里的问题是strDate中的希伯来日期带有unicode字符,使其从右向左显示。 当与timeForResponse中的’普通’从左到右的字符串组合时,这会引起混乱。 日期格式化程序正在从希伯来语语言环境中选择它。
尝试这个:
- 将日期格式字符串更改为
[dateFormatter setDateFormat:@"dd.MM.yyyy,EEEE"];
- 将格式的字符串更改为
NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];
0x200E unicode字符是不可见的,但会将渲染恢复为从左到右的模式。
在上面之后,这是我得到的输出:
07: 00-16: 00 | 17.08.2016,יום רביעי
我只需要从Debug更改为Release并安装Release .exe,现在这两个服务都在运行并且没有任何问题