如何在字母数字字符串中修剪字符串直到第一个字母?

时间:2015-11-04 06:37:15

标签: ios objective-c

我有一个字母数字字符串为24 minutes我想像24m一样修剪它,请告诉我该怎么做?

3 个答案:

答案 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 ClasscomponentsSeparatedByString: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);