如何找出是否有“。”在NSString?

时间:2009-11-03 14:38:53

标签: objective-c cocoa macos

有一个

NSString *str = @"12345.6789"

并想知道是否有“。”里面的人物。当我试图匹配@“时,我担心会出现丑陋的字符编码问题。”对此?如果有的话,你会如何确保总是找到匹配?

我只需要知道那里有一个点。其他一切都无所谓。

5 个答案:

答案 0 :(得分:14)

您可以使用rangeOfString:message来获取“。”的范围。是

原型是:

- (NSRange)rangeOfString:(NSString *)aString

您可以在以下网址找到有关此邮件的详细信息:Mac Dev Center

会有这样的事情:

NSRange range;  
range = [yourstring rangeOfString:@"."]; 
NSLog(@"Position:%d", range.location);

如果需要,还有另一条消息(rangeOfString:options :),您可以在其中添加一些选项,例如“区分大小写”等。

答案 1 :(得分:3)

如果[str rangeOfString:@"."]返回除{NSNotFound, 0}以外的任何内容,则会在接收方中找到搜索字符串。由于NSString负责编码,因此没有编码问题。但是,如果您的str是用户提供的,并且可能包含不同的小数点分隔符(例如逗号),则可能会出现问题。但是,如果str真的来自用户,那么很多其他事情可能会出现错误。

答案 2 :(得分:2)

要检查。符号,它会很有用。

if ([[str componentsSeparatedByString:@"."] count]>1) {
        NSLog(@"dot is there");
}else{
        NSLog(@"dot is not there");
}

答案 3 :(得分:1)

如果您真正想要做的是确定字符串是否代表带小数部分的数字,更好的解决方案是将字符串提供给数字格式化程序,然后检查数字doubleValue以查看它是否具有一个小部分。

对于后一步骤,一种方法是使用the modf function,它返回小数部分(直接)和整数部分(通过引用)。如果小数部分大于零(或者您愿意容忍的某个小部分),则该数字具有小数部分。

这更好的原因是因为不是每个人都以“12345.6789”格式写小数部分。有些国家使用逗号,我确信这不是唯一的变体。让数字格式化程序为您处理这种情况。

答案 4 :(得分:0)

如果你在项目中使用这类东西,我写了一个小方法让事情变得更自然:

+(BOOL)seeIfString:(NSString*)thisString ContainsThis:(NSString*)containsThis
{
    NSRange textRange = [[thisString lowercaseString] rangeOfString:[containsThis lowercaseString]];

    if(textRange.location != NSNotFound)
        return YES;

    return NO;
}

享受!