Комбинировать текст с двумя языками
У меня есть два текста: один на иврите и один на английском.
В первом тексте у меня есть дата, которая находится на иврите.
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
С другой стороны, у меня есть текст 07: 00-16: 00 в объекте NSString timeForRequest
Мой необходимый формат יום שני, 15.01.2016 | 16:00 - 07:00
и когда я пытаюсь сделать то же самое со следующим кодом
[NSString stringWithFormat:@"%@ | %@",strDate,timeForRequest]
он показывает мне вот так: יום שישי, 19.08.2016 | 07: 00-16: 00
Обратите внимание на то, что время неверно, пожалуйста, помогите мне выйти из этой проводной ситуации.
Спасибо заранее.
Ответы
Ответ 1
Я уверен, что проблема в том, что в дате иврита в strDate есть символы юникода, которые отображают его справа налево. Это вызывает хаос в сочетании с "обычной" левой-правой строкой в timeForResponse. Форматир даты выбирает это из еврейского языка.
Попробуйте следующее:
- Измените строку формата даты на
[dateFormatter setDateFormat:@"dd.MM.yyyy,EEEE"];
- Измените строку в формате
NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];
Юникодный символ 0x200E невидим, но возвращает рендеринг в режим слева направо.
После вышесказанного это результат, который я получаю:
07: 00-16: 00 | 17.08.2016,יום רביעי
Ответ 2
Мне просто пришлось перейти от Debug к выпуску и установке версии .exe, теперь обе службы работают и работают без проблем