标签: nsrange

NSRange可以确定更大的字符串中是否存在一段文本?

我有一个从http GET回来的大字符串,我正在尝试确定它是否有特定的文本片段(请在这里原谅我的罪过)

我的问题是:可以/我应该使用NSRange来确定这段文本是否确实存在?

  NSRange textRange;
  textRange =[[responseString lowercaseString] rangeOfString:[@"hat" lowercaseString]];

  if(textRange.location != NSNotFound)
  {
    //do something magical with this hat
  }
Run Code Online (Sandbox Code Playgroud)

先感谢您!

objective-c nsrange

2
推荐指数
1
解决办法
3853
查看次数

如何在此NSString中使用NSRange?

我有以下内容NSString:

productID = @"com.sortitapps.themes.pink.book";
Run Code Online (Sandbox Code Playgroud)

最后,"书"可以是任何东西......"音乐","电影","游戏"等.

我需要在粉红色这个词之后找到第三个句号,这样我就可以用其他东西替换最后一个"书"字.我如何使用NSRange执行此操作?基本上我需要这个:

partialID = @"com.sortitapps.themes.pink.";
Run Code Online (Sandbox Code Playgroud)

objective-c ios nsrange

2
推荐指数
1
解决办法
9134
查看次数

设置attributedText,NSRangeException错误

尝试通过选择设置我的UIText视图的属性文本属性.几乎是有效的.使用下面的红色字体颜色设置文本的操作.这有时会起作用,但通常会出错:

因未捕获的异常'NSRangeException'而终止应用程序,原因:'NSMutableRLEArray objectAtIndex:effectiveRange :: out of bounds'

即使文本视图中的字符似乎多于所选范围所指示的字符,也会发生这种情况.

- (IBAction)setText:(id)sender {

    NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithAttributedString:myTextView.attributedText];
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(p1,p2)];

    myTextView.attributedText = string;

}
Run Code Online (Sandbox Code Playgroud)

p1和p2是所选文本的开头和结尾.它们是使用下面的代码生成的,它似乎按预期工作:

- (void)textViewDidChangeSelection:(UITextView *)textView {

    UITextRange *selectedRange = [myTextView selectedTextRange];

    p1 = [myTextView offsetFromPosition:myTextView.beginningOfDocument toPosition:[selectedRange start]];
    p2 = [myTextView offsetFromPosition:myTextView.beginningOfDocument toPosition:[selectedRange end]];

 }
Run Code Online (Sandbox Code Playgroud)

编辑:我在阅读@ borrrden的评论后解决了这个问题.而不是NSMakeRange(p1,p2)]我使用NSMakeRange(p1,p2-p1)].

uitextview nsattributedstring ios nsrange nsrangeexception

2
推荐指数
1
解决办法
1901
查看次数

NSRange,在一个段落中找到一个错误的结果

我写了一个方法来突出显示一个段落NSString中的单词,通过发送一个单词,它完美地工作,直到我遇到这种情况:

当我有这个文字时:

他们的母亲试图在其他地方穿上它们......

当我传递这个词时other,"m other" 这个词正在突出显示,当我走过时,in我得到了"礼服ing".

这是我的代码:

-(void)setTextHighlited :(NSString *)txt{
    NSMutableAttributedString * string = [[NSMutableAttributedString alloc]initWithString:self.textLabel.text];

    for (NSString *word in [self.textLabel.text componentsSeparatedByString:@" "]) {

        if ([word hasPrefix:txt]) {
            NSRange range=[self.textLabel.text rangeOfString:word];
            [string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:range];
    }
Run Code Online (Sandbox Code Playgroud)

我试过使用rangeOfString:options:包含所有选项,但仍然有同样的问题.

请指教

PS: 这是我的代码的来源

objective-c nsstring nsattributedstring ios nsrange

2
推荐指数
1
解决办法
1342
查看次数

使用范围创建子数组时抛出 NSRangeException

这是我得到的一个非常奇怪的错误。是这样的:

'NSRangeException', reason: '*** -[NSArray subarrayWithRange:]: range {2, 3} extends beyond bounds [0 .. 3]'
Run Code Online (Sandbox Code Playgroud)

我不明白的是,范围 (2,3) 显然不会超出范围 (0,3)

事实上,它在这些范围内,因为我像这样设置了数组和范围:

NSRange range = NSMakeRange([wordArray indexOfObject:letterInWordArray]+1,wordArray.count-1);
NSMutableArray* sortedSubArray = [[NSMutableArray alloc] initWithArray:[wordArray subarrayWithRange:range]];
Run Code Online (Sandbox Code Playgroud)

本质上,我正在遍历一个名为 wordArray 的数组,并且我想创建一个包含我尚未遍历的所有项目的子数组。有人可以帮我从这里出去吗?

objective-c nsarray nsrange nsrangeexception

2
推荐指数
1
解决办法
1391
查看次数

当混合中出现新行字符时,UITextView firstRectForRange无法正常工作

我正在使用此方法将NSRange转换为CGRect,因为它与UITextView相关:

- (CGRect)frameOfTextRange:(NSRange)range inTextView:(UITextView *)textView
{
    UITextPosition *beginning = textView.beginningOfDocument;
    UITextPosition *start = [textView positionFromPosition:beginning offset:range.location];
    UITextPosition *end = [textView positionFromPosition:beginning offset:range.location+range.length];
    UITextRange *textRange = [textView textRangeFromPosition:start toPosition:end];
    CGRect rect = [textView firstRectForRange:textRange];
    return rect;
}
Run Code Online (Sandbox Code Playgroud)

这个问题的答案是有人问我同样的问题.上述方法适用于此:

这是一个伟大的文本领域是的,它是findthistoken

不像这样:

this is a great one
(new line)
(new line)
findthistoken
Run Code Online (Sandbox Code Playgroud)

它似乎完全忽略了有2个新行字符的事实?:/

如何使用新的行字符?

uitextview ios nsrange

2
推荐指数
1
解决办法
1326
查看次数

rangeOfCharacterFromSet(characterSet).location 不是 Swift?

因为我发现的所有样本都使用 NSRange 版本,所以一直在使用这个方法,但在 Swift 2 中,此方法返回一个范围,因此没有要测试的位置。

我知道未找到的结果是 {NotFound,0} 但没有史酷比如何测试它?

if (contact.facebook!.rangeOfCharacterFromSet(characterSet.invertedSet).location != NSNotFound){...}
Run Code Online (Sandbox Code Playgroud)

错误,但我不知道如何查询范围

range nsrange swift2

2
推荐指数
1
解决办法
1686
查看次数

快速计算从单词到字符串结尾的字符串范围

我有一个 NSMutatableString:

var string: String = "Due in %@ (%@) $%@.\nOverdue! Please pay now %@"
attributedText = NSMutableAttributedString(string: string, attributes: attributes)
Run Code Online (Sandbox Code Playgroud)

如何快速计算单词的长度和起始索引Overdue

到目前为止,我已经尝试过:

let startIndex = attributedText.string.rangeOfString("Overdue")
let range = startIndex..<attributedText.string.finishIndex

// Access the substring.
let substring = value[range]
print(substring)
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

nsrange swift

2
推荐指数
1
解决办法
1988
查看次数

如何从完整字符串 iOS swift 中找到字符串的多个 NSRange

let fullString = "Hello world, there are \(string(07)) continents and \(string(195)) countries."
let range = [NSMakeRange(24,2), NSMakeRange(40,3)]
Run Code Online (Sandbox Code Playgroud)

需要找到整个完整字符串中数字的 NSRange,并且两个数字有可能相同。目前如上所示进行硬编码,消息可以是动态的,而硬编码值将出现问题。

我已经分割了字符串并尝试获取,NSRange因为可能存在相同的值。比如 stringOne 和 stringTwo。

func findNSMakeRange(initialString:String, fromString: String) {
        let fullStringRange = fromString.startIndex..<fromString.endIndex
        fromString.enumerateSubstrings(in: fullStringRange, options: NSString.EnumerationOptions.byWords) { (substring, substringRange, enclosingRange, stop) -> () in
            let start = distance(fromString.startIndex, substringRange.startIndex)
            let length = distance(substringRange.startIndex, substringRange.endIndex)
            let range = NSMakeRange(start, length)

            if (substring == initialString) {
                print(substring, range)
            }
        })
    }
Run Code Online (Sandbox Code Playgroud)

收到类似错误Cannot invoke distance with an argument list of …

nsstring nsrange swift

2
推荐指数
1
解决办法
2013
查看次数

ObjC/Cocoa NSRange:范围或索引超出范围

我试图找到一个自昨晚以来困扰我的问题的答案.

NSRange searchRange.location = 0;
NSRange searchRange.length = [string length]; // > 2000 characters long
NSString *substring = @"substring"; // Occurs within string several times

NSRange substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];

// Some code here. Create substring and add it to array.

// Move the search range on
searchRange.location = substringRange.location + substringRange.length;

// fails
substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
Run Code Online (Sandbox Code Playgroud)

第一个[string rangeOfString ...]方法无故障地调用,但第二个调用导致以下错误:

* - [__ NSCFString rangeOfString:options:range:locale:]:范围或索引超出范围

据我所知,问题是由新值赋值给searchRange.location引起的 - 删除该语句会导致第二次成功调用该方法.看看调试器,这些值看起来像预测的那样 - 没有任何超出范围的东西 - 而且我还在监视器上尖叫.

这只是简单的添加......不是吗?

objective-c nsrange

1
推荐指数
1
解决办法
951
查看次数