Комбинировать текст с двумя языками

У меня есть два текста: один на иврите и один на английском.

В первом тексте у меня есть дата, которая находится на иврите.

    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"];

  1. Измените строку в формате

NSString *result = [NSString stringWithFormat:@"\u200E%@ | %@", timeForRequest, strDate];

Юникодный символ 0x200E невидим, но возвращает рендеринг в режим слева направо.

После вышесказанного это результат, который я получаю:

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

Ответ 2

Мне просто пришлось перейти от Debug к выпуску и установке версии .exe, теперь обе службы работают и работают без проблем