我有一个字母数字字符串为24 minutes
我想像24m
一样修剪它,请告诉我该怎么做?
答案 0 :(得分:3)
尝试使用正则表达式中的代码:
NSString *string = @"24 minutes";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"([0-9]+)[^a-zA-Z]*([a-zA-Z]{1}).*" options:NSRegularExpressionCaseInsensitive error:nil];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"$1$2"];
NSLog(@"%@", modifiedString);
输出:
24m
答案 1 :(得分:1)
您可以使用NSString Class的componentsSeparatedByString:
和substringToIndex:
方法来获得结果。
NSString *str = @"24 minutes";
NSArray *components = [str componentsSeparatedByString:@" "];
// Validation to prevent array out of index crash (If input is 24)
if ([components count] >= 2)
{
NSString *secondStr = components[1];
// Validation to prevent crash (If input is 24 )
if (secondStr.length)
{
NSString *shortName = [secondStr substringToIndex:1];
str = [NSString stringWithFormat:@"%@%@",components[0],shortName];
}
}
NSLog(@"%@",str);
此示例适用于上述字符串,但您需要处理不同类型的输入。如果这些值之间存在多个空格,则可能会失败。
答案 2 :(得分:1)
NSString *aString = @"24 minutes"; // can be "1 minute" also.
首先将字符串分成两个部分: 将它除以空格,因为你的字符串可以包含一个或多个数字,例如" 1分钟"," 24分钟"。
NSArray *array = [aString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
array = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != ''"]];
NSLog(@"%@",[array objectAtIndex:0]);
然后使用substringToIndex
获取字符串第二个组成部分的第一个字母,最后组合两个字符串。
NSString * firstLetter = [[array objectAtIndex:1] substringToIndex:1];
NSString *finalString = [[array objectAtIndex:0] stringByAppendingString:firstLetter];
NSLog(@"%@",finalString);