有没有办法在HTML字符串中反转%@ Text

时间:2014-04-18 02:43:51

标签: html ios objective-c uiwebview nsstring

对不起,伙计们,我是网络开发人员的新手。我有以下字符串:

Mark sent $USD 100 to Olivia.

我在UIWebView中收到这句话。所以字符串基本上是:

NSString whatHappened = [NSString stringWithFormat: @"Mark sent <b>%@</b> to %@", amount, receiver];

NSString receiver = "Olivia"
NSString amount = "$USD 100"

现在,我基本上希望它是这样的,$USD 100被颠倒了,所以它是:100 $USD。我怎么可能实现这个目标?我也有多个要发送的内容,例如100 Apples等,因此amount字符串上的简单反转将无法正常工作。关于如何在HTML字符串中更改此内容的任何建议?

2 个答案:

答案 0 :(得分:1)

你有三个不错的选择:

1)正则表达式(Search through NSString using Regular Expression

2)只需在空格上划分字符串:

NSArray *components = [string componentsSeparatedByString:@" "];
NSString *currency = components[0];
NSInteger amount = [components[1] integerValue];

3)使用NSScanner(https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSScanner_Class/Reference/Reference.html

答案 1 :(得分:0)

在您的情况下,您可以使用NSNumberFormatter将金额转换回NSNumber并以此方式重新格式化。

NSString *formatString = @"$USD 0.0";
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setPositiveFormat:formatString];

NSNumber *amountValue = [currencyFormatter numberFromString:amount];

然后你可以按照自己的意愿重新格式化:

if (amountValue != nil) {
    NSString *formattedValue = [NSString stringWithFormat:@"%@ $USD", amountValue];
}

请注意,如果字符串不是您为格式化程序指定的格式,amountValue将等于nil。这意味着,如果您决定发送,例如@"100 Apples",则可以轻松检测到它。

然后,您唯一的挑战就是确定传入金额的格式,如果有可能发生变化。