I have two text, one in Hebrew language and one in English.
In first text I have date that is in Hebrew.
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];
and start Date is : יום שישי,19.08.2016 in NString object strDate
On other hand I have text 07: 00-16: 00 in NSString object timeForRequest
My needed format is יום שני, 15.01.2016 | 16:00 - 07:00
and when I try to do same with following code
[NSString stringWithFormat:@"%@ | %@",strDate,timeForRequest]
it shows me like this :יום שישי,19.08.2016 | 07: 00-16: 00
Observe the time is not correct, please help me to come out from this wired situation.
Thanks in advance.
I'm pretty sure that the problem here is that the hebrew date in strDate is carrying unicode characters that make it display right-to-left. That's causing chaos when combined with the 'ordinary' left-to-right string in timeForResponse. The date formatter is picking that up from the hebrew locale.
Try this:
- Change your date format string to
[dateFormatter setDateFormat:@"dd.MM.yyyy,EEEE"];
- Change your string with format to
NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];
The 0x200E unicode character is invisible but puts the rendering back into left-to-right mode.
After the above, this is the output that I'm getting:
07: 00-16: 00 | 17.08.2016,יום רביעי
I just had to change from Debug to Release and Install the Release .exe, now both services are running and working without any problem
来源:https://stackoverflow.com/questions/38848130/combine-two-string-in-different-language-rtl-ltr