【问题标题】:Not getting correct index for the char in String没有为字符串中的字符获取正确的索引
【发布时间】:2013-06-15 04:51:07
【问题描述】:

我有一个类似“下雨是什么”的字符串

我需要在每个需要通过键盘输入的字符下添加闪烁。 所以我使用 [characterAtIndex]..

找到了这个字符

但是当我到达 'it' 中的 i 使用 [characterAtIndex:i] 找到 i 的索引时,它返回 5。 字符串中必须为 8。

如何获取字符串中下一个重复字符的正确索引?

代码:

- (int) getCurrentIndexOfChar : (unichar)c instring : (NSString *)str {
      for (int i = 0; i<=[str.length]; i++) {
         if(c == [str characterAtIndex:i]) {
             if (previousChar == c){    //I check here for previous character 
                  return i+1;           //If the previous character is same as next I increment index
             } else {
                  return i;
             }
             previousChar = c;
          }
      }
}

【问题讨论】:

  • 发布您的代码.......
  • @Vikas 你的意思是当你输入 i 时,应该找到所有 i 字符串?
  • @Bhargavi 不是全部。只有下一个字符。假设我已经输入了“什么是”,我必须在“它”中输入“i”字符......上面的代码找到索引 5......它需要是 8..在字符串中
  • @CodaFi 对 indexOfCharacter:
  • @Vikas 为什么你不使用 rangeOfString:

标签: ios objective-c nsstring indexing char


【解决方案1】:

请试试这个方法

NSString *main = @"This is it in rain";
NSString *search = @"This is i";
NSLog(@"Index: %d",[main rangeOfString:search].location+[search length]-1);

这里你可以用用户输入的文本替换搜索

【讨论】:

  • 所以这会给我'i'的索引吗?这适用于单个单词“成分”吗?我必须在字符串中获取第二个 i 的索引。
  • 是的,只要用 diff 测试用例试一试,如果需要,做一些工作。
  • 当我输入任何字符时,剩余的字符都会留在字符串中。像 strLeft = @"in rain" 如果我​​输入 "t" 不是输入的字符。我们可以根据它修改代码吗?
  • 由于要在键入的字符下显示闪烁,您需要使用用户输入的整个字符串作为搜索字符串。那么这将起作用。
  • 当我输入“This is”时,我得到了剩下的字符串,比如“it in rain”。我们可以用剩余的字符串来修改上面的代码来获取当前索引吗?
猜你喜欢
  • 2021-07-27
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 2012-06-29
  • 2012-10-30
  • 1970-01-01
  • 2014-06-26
  • 2011-11-21
相关资源
最近更新 更多