Действительно ли возможно использовать строки формата для выравнивания, NSStrings как числа может быть?

Некоторые объекты должны выполнить произвольные "события", достигающие некоторого условия.

, насколько произвольный эти события? Они могут считаться, присвоенный идентификатор и отображаться на соотносимо?

public class Command<T> where T : ISerializable
{
  T _target;
  int _actionId;
  int _conditionId;

  public Command<T>(T Target, int ActionId, int ConditionId)
  {
    _target = Target;
    _actionId = ActionId;
    _conditionId = ConditionId;
  }

  public bool FireRule()
  {
    Func<T, bool> theCondition = conditionMap.LookupCondition<T>(_conditionId)
    Action<T> theAction = actionMap.LookupAction<T>(_actionId);

    if (theCondition(_target))
    {
      theAction(_target);
      return true;
    }
    return false;
  }  
}
13
задан willc2 4 November 2009 в 04:34
поделиться

2 ответа

The following seems to work, but requires conversion from your NSString's to C-strings.

NSString *word = @"tree";
NSUInteger rank = 4;
NSString *str = [NSString stringWithFormat:@"word:%-20s rank:%u", [word UTF8String], rank];
NSLog(@"%@", str);

Don't know why the field width is being ignored when trying to use an NSString.

17
ответ дан 1 December 2019 в 23:31
поделиться

Да, точно так же, как printf .

Согласно документация , stringWithFormat: подчиняется спецификации IEEE printf , которая допускает все виды изменений отдельных аргументов. В документации есть ограниченный набор этой информации, но они связаны со спецификацией OpenGroup printf для Unix , чтобы предоставить полную информацию (стоит прочитать, вы можете выполнить множество трюков с спецификаторы формата).

Попробуйте это, чтобы получить именно то, что вы вставили выше:

NSString *word = @"butterfly";
NSUInteger rank = 4;
NSString *str = [NSString stringWithFormat:@"word:%-11s rank:%u", [word UTF8String], rank];

Вот пример того, как я форматирую свои отладочные данные (я не использую NSLog , я оборачиваю печать к стандартной ошибке, чтобы получить файл и строку):

fprintf(stderr, "%s | %30s:%-5d | %s", [[[NSDate date] description] UTF8String],
    [fileName UTF8String], line, [body UTF8String]);
1
ответ дан 1 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: