黑马程序员技术交流社区

标题: NSRange获取字符位置和长度 [打印本页]

作者: Jine    时间: 2014-5-9 15:23
标题: NSRange获取字符位置和长度
NSString *s = @"welcome to shanghai to";


NSRange f1 = [s rangeOfString: @"to"];


NSLog(@"%ld, %ld", f1.location, f1.length);


我自己运行了下发现显示的是 8, 2。那如果我要获取第二个to的位置,代码该怎么写???


来个神人指教!!!{:3_48:}

作者: 悟中生有    时间: 2014-5-9 19:51
你试试:把字符串转换为可变字符串,删除第一个to。
作者: Jine    时间: 2014-5-9 20:39
如果把第一个to删除了,就会影响到第二个to的位置啊!
作者: agelessman    时间: 2014-5-9 22:03
NSString *str1 = @"wod to sefa afa to dfaes to reewer";
   
    NSMutableString *str = [NSMutableString stringWithString:str1];
  
   
    [str replaceCharactersInRange:[str rangeOfString:@"to"] withString:@"aa"];
    NSRange range1 = [str rangeOfString:@"to" ];
   
    NSLog(@"%ld-- %ld",range1.location,range1.length);
呵呵,暂时只能想到这个笨方法,
作者: 流心语    时间: 2014-5-10 17:40
在使用rangeOfString:方法时参数使用“hai to”,然后将NSRange结构体的location成员的值加4就行了。
这种方法的思想是延长字符串,保证字符串的唯一性。
作者: UT丶    时间: 2014-5-10 20:17
  1. NSString *p = @"aa to bb to";
  2.         NSString *p1;
  3.         NSRange srg = [p rangeOfString:@"to"];
  4.         NSRange srg2;
  5.         
  6.         p1 = [p substringFromIndex:srg.location+srg.length];
  7.         srg2 = [p1 rangeOfString:@"to"];
  8.         
  9.         
  10.         NSLog(@"%ld",srg2.location);
复制代码


希望可以帮到你
作者: Jine    时间: 2014-5-10 21:22
流心语 发表于 2014-5-10 17:40
在使用rangeOfString:方法时参数使用“hai to”,然后将NSRange结构体的location成员的值加4就行了。
这种 ...

这方法好,简单又实用!
作者: 522049094    时间: 2014-5-10 22:37
我觉得将字符串转换成可变字符串,然后用遍历来查找字符串,这样只要遇到to都可以找到。




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