我在Objective C中很新。我试图将以下字符串5896.3454A
转换为数字字符串58963454
。知道如何做到这一点。
我一直在尝试使用NSScanner
课程,但我不确定这是否是最好的方法。
答案 0 :(得分:3)
一种可能的解决方案是使用带正则表达式的字符串替换:
NSString *mixed = @"5896.3454A";
NSString *pattern = @"\\D"; // Pattern for "not a digit"
NSString *digitsOnly = [mixed stringByReplacingOccurrencesOfString:pattern
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [mixed length])];
答案 1 :(得分:0)
Objective-C包含很多小技巧。这是解决问题的愚蠢行为。
NSString *string = @"5896.3454A";
NSCharacterSet *digits = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSCharacterSet *nonDigits = [digits invertedSet];
NSArray *digitSubstrings = [componentsSeparatedByCharactersInSet:nonDigits];
NSString *result = [digitSubstrings componentsJoinedByString:@""];
result
将只包含string
中的数字。
我创建一个包含所有数字的字符集。我使用invertedSet
来获取除数字之外的每个字符的集合。这是直截了当的,接下来是愚蠢的部分。接下来,我将字符串拆分为子字符串数组。这将具有剥离所有非数字字符的效果,但所有数字都被分解为子字符串。在这种情况下,digitSubstrings
将为@[@"5896", @"3454", @""]
。不是问题,我将所有子串连接在一起以创建最终字符串。
答案 2 :(得分:0)
你也可以这样做 你问题中提到的yourString NSInteger newInt = [[[yourString stringByReplacingOccurrencesOfString:@"。" withString:@""] stringByReplacingOccurrencesOfString:@" A" withString:@""] integerValue];
ADDED:NSInteger newInt = [[@" 123.123A" stringByReplacingOccurrencesOfString:@""。 withString:@""] integerValue];结合NSString和NSScanner方法,integerValue忽略从第一次出现角色开始的所有内容
您可以在NSString类中找到它。这是否是更好的解决方案取决于你的"字符串数"中不需要的文字。你想要替换/删除。