有一个
NSString *str = @"12345.6789"
并想知道是否有“。”里面的人物。当我试图匹配@“时,我担心会出现丑陋的字符编码问题。”对此?如果有的话,你会如何确保总是找到匹配?
我只需要知道那里有一个点。其他一切都无所谓。
答案 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;
}
享受!