【问题标题】:Check to see if NSMutableString does not contain a specific char检查 NSMutableString 是否不包含特定字符
【发布时间】:2011-04-21 05:17:00
【问题描述】:

有没有办法检测 NSString 是否不包含特定字符(在这种情况下是“-”)?例如,如果我有 NSString @"-OU" 和 NSString @"YOU" 是否有办法在字符串为 @"YOU" 而不是 @"-OU" 时触发 UIAlert?

编辑:顺便说一句,我正在尝试使任何字符串都动态化。我目前有以下代码,想知道这是否可行:

  - (BOOL) isDone:(NSString *)str{

       unichar dash = '-';

    for(int i = 0; i < [str length]; i ++){
        if([str characterAtIndex:i] != dash){
            return YES;
        }

        else{
            return NO;
        }
    }

}

此代码当前在 xcode 中引发以下警告:“Control may reach end of non-void function”。

【问题讨论】:

    标签: objective-c nsmutablestring


    【解决方案1】:

    试试这个

    NSString *yourString=@"-OU";  
    if ([yourString rangeOfString:@"-"].location == NSNotFound) {
      NSLog(@"string does not contain -");
    } else {
      NSLog(@"string contains -");
    }
    

    【讨论】:

    • 我不太确定您要做什么,您是否只是测试第一个字符是否为破折号?如果是,那么为什么要循环?你的循环在第一个字符之后终止,无论是真还是假
    • 我只是想测试一下单词中是否有破折号。
    【解决方案2】:

    如果您尝试使用自己的构建功能测试破折号是否在单词中,我会这样做

     - (BOOL) isDone:(NSString *)str{
    
           unichar dash = '-';
    
        for(int i = 0; i < [str length]; i ++){
            if([str characterAtIndex:i] == dash){
                return YES;
            }
    
        }
        return NO;
    
    }
    

    这样它将遍历整个字符串,直到找到破折号,并在找到破折号后立即终止,否则一旦完成检查整个字符串,它将返回 NO。

    【讨论】:

    • 啊,很好,谢谢!但实际上我需要颠倒你的例子中的 YES 和 NO (为你做的)。
    • 请注意,我将 if 语句从 != 更改为 == 以简化事情,但这一切都取决于您希望返回的值。
    • 检查下面的答案 - 使用rangeOfString
    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2013-12-23
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多