如何格式化steam web api中属性的描述字符串?

时间:2014-06-07 17:52:39

标签: xcode steam-web-api

当我使用此链接获取TF2的项目架构(http://api.steampowered.com/IEconItems_440/GetSchema/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&language=en)时,在attributes属性下,有一个TF2游戏中每个属性的列表。

例如,这是一个这样的属性:

{
            "name": "gesture speed increase",
            "defindex": 201,
            "attribute_class": "mult_gesture_time",
            "description_string": "+%s1% faster taunt speed on wearer",
            "description_format": "value_is_percentage",
            "effect_type": "positive",
            "hidden": false,
            "stored_as_integer": false
},

"description_string"属性下,您可以看到字符串使用了格式说明符,但是如何在xcode中实现它。 xcode中的%s1不是字符串的正确格式说明符,因此如何更改它?

编辑:我正在尝试做的事情主要是使用[NSString stringWithFormat:@"+%s1% faster taunt speed on wearer", @"25"]。问题是,当我NSLog这个语句时,数字不显示,而是一些奇怪的符号。我希望声明“佩戴者的嘲讽速度提高25%”,那么我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

我认为你最好的方法是放弃stringWithFormat:否则你必须转义像%这样的字符。

您可以执行以下任一操作:

单次出现%s1
如果您保证%s1只会在description_string中出现一次,您只需使用:

NSString *description = @"+%s1% faster taunt speed on wearer";
description = [description stringByReplacingOccurrencesOfString:@"%s1" withString:@"25"];

多次出现%s1

NSString *description = @"+%s1% faster taunt speed on wearer and +%s1 XP";
NSArray *values = @[@"25", @"1000"];
NSRange range = NSMakeRange(0, description.length);
NSUInteger index = 0;
while (range.location != NSNotFound) {
    range = [description rangeOfString:@"%s1" options:0 range:range];
    if (range.location != NSNotFound) {
        NSString *value = values[index];
        description = [description stringByReplacingCharactersInRange:range withString:value];
        range = NSMakeRange(range.location + value.length, description.length - (range.location + value.length));
    }
    index++;
}
相关问题