黑马程序员技术交流社区

标题: 一个关于OC字符串的问题 [打印本页]

作者: 程序猿-2014    时间: 2014-4-12 11:42
标题: 一个关于OC字符串的问题
本帖最后由 程序猿-2014 于 2014-4-14 22:58 编辑

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSString *str = @"www-it-heima-com";
    NSLog(@"原字符串:%@",str);
    //获取字符串中第一个“-”的范围
    NSRange range = [str rangeOfString:@"-"];

    while (range.location != NSNotFound) {
        str = [str stringByReplacingCharactersInRange:range withString:@""];
      
        range = [str rangeOfString:@"-"];
    }
    //创建一个新的可变字符串
    NSMutableString *newStr = [NSMutableString stringWithString:str];
    //获取新字符串中"www"和"com"的范围
    //在"www"后和"com"前插入"."
    NSRange wwwRange = [newStr rangeOfString:@"www"];
    NSRange comRange = [newStr rangeOfString:@"com"];
    [newStr insertString:@"." atIndex:wwwRange.length];
    [newStr insertString:@"." atIndex:comRange.location + 1];
    NSLog(@"新字符串:%@",newStr);
}

上边是题目

  while (range.location != NSNotFound) {
        str = [str stringByReplacingCharactersInRange:range withString:@""];
        
        range = [str rangeOfString:@"-"];
    }
这一句是什么意思     具体解释下    不要像写注释一样的回答    看不懂
作者: 董月峰    时间: 2014-4-13 14:49
楼主求给分啊
while (range.location != NSNotFound) {
    str = [str stringByReplacingCharactersInRange:range withString: @""];
   
    range = [str rangeOfString: @"-"];
}
之前代码中提到,range是一个字符串的范围NSRange range = [str rangeOfString: @"xxx"];,查找字符串范围找不到的时候,range.length = 0;range.location = NSNotFound == -1

while (range.location != NSNotFound)
意思就是你找的字符串的范围不是空的时候
str = [str stringByReplacingCharactersInRange:range withString: @""];
那么就把这个范围删掉,【其实就是用“”代替原来的“xxx”】,新的字符串里没有之前找到的“-”了

range = [str rangeOfString: @"-"];
while循环中的这句话的意思就是遇到"-"就删除,删完str里面的"-"为止
作者: 董月峰    时间: 2014-4-13 15:09
本帖最后由 董月峰 于 2014-4-13 15:35 编辑

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSString *str = @"www-it-heima-com";
    NSLog(@"原字符串:%@",str);

    //创建一个新的可变字符串
    NSMutableString *newStr = [str mutableCopy];

    NSRange range = [newStr rangeOfString: @"-"];

    while (range.location != NSNotFound) {

        [newStr replaceCharactersInRange:range withString: @"."];

        range = [newStr rangeOfString: @"-"];
    }

    NSRange range2 = [newStr rangeOfString: @"t.h"];
    [newStr replaceCharactersInRange:range2 withString: @"th"];


    NSLog(@"新字符串:%@",newStr);

}

楼主题目哪里找的,我重新做了一下,你看看

更贱的做法是

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSString *str = @"www-it-heima-com";
    NSLog(@"原字符串:%@",str);

    //创建一个新的可变字符串
    NSMutableString *newStr = [str mutableCopy];

    NSRange range = [newStr rangeOfString: @"-it-heima-"];
    [newStr replaceCharactersInRange:range withString: @".itheima."];

    NSLog(@"新字符串:%@",newStr);
}


作者: 程序猿-2014    时间: 2014-4-14 23:00
董月峰 发表于 2014-4-13 15:09
#import
int main(int argc, const char * argv[]){    NSString *str = @"www-it-heima-com";    NSLog(@ ...

长知识了    很好很强大




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2