NSString stringWithFormat: со случайным числом замен - PullRequest
2 голосов
/ 15 апреля 2011

Я читаю в списке строк, каждая из которых может содержать несколько заполнителей (% @).Я хотел бы использовать stringWithFormat: для вставки соответствующего значения, но это работает только для одной замены.Что я могу использовать для замены всех значений?Есть ли какая-то функция подстановки строк?

Это пример того, что я пытаюсь сделать (немного псевдокода):

NSString[] patterns = { "my name is %@ every day", "my name is %@ and it will remain %@" };
foreach (NSString s in patterns )
{
    // sometimes the string has one substitution, and sometimes
    // more. The project where I am doing this throws a BAD_ACCESS
    // error if more than one substitution is required so need
    // to take a different approach?
    print [NSString stringWithFormat:s, "Jack"];
}

1 Ответ

3 голосов
/ 15 апреля 2011

Вы можете сказать stringWithFormat:, чтобы использовать один и тот же аргумент несколько раз, указав позицию. См. Спецификаторы формата строки . Пример:

[NSString stringWithFormat:@"%1$@ is the first argument, and so is %1$@",@"this"];
// creates "this is the first argument, and so is this"

Вы также можете использовать stringByReplacingOccurferencesOfString: withString: для замены всех экземпляров «% @», но для этого требуется, чтобы вы указывали каждый аргумент отдельно, а они должны быть строками:

[@"%@ is the first argument, and so is %@" stringByReplacingOccurrencesOfString:@"%@" withString:@"this"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...