标签: nsrange

获取NSString中所有大写字母的NSRange对象数组的最快方法?

我需要NSRange对象作为给定NSString中每个大写字母的位置,以输入自定义属性字符串类的方法. 

当然有很多方法可以实现这一点,例如rangeOfString:options:使用NSRegularExpressionSearch或使用RegexKitLite在遍历字符串时单独获取每个匹配. 

完成此任务的最快表现方法是什么?

iphone objective-c nsstring ios nsrange

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

未知的转义序列 - 正则表达式

我想验证我正在使用的电子邮件文本RegexKitLite.h.我做的事情如下:

NSString *strEmail = [txtEmail text];
                NSRange range = [strEmail rangeOfRegex:@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"];
                NSLog(@"%@",range);  
Run Code Online (Sandbox Code Playgroud)

现在我只是检查一下是否有效.但我在第二行得到错误.日志没有说什么.但在第二行有一个警告说:

Unknown escape sequence '\.'  
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?表达中是否有问题还是存在其他问题?

regex iphone nsrange

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

删除部分NSString并将其复制到另一个NSString中

所以我有一个NSString,让我们说:NSString *mainString = @"My Name is Andrew (I like computers)"; 我想从mainString中删除"("到")"中的所有内容.我想将"()"之间的所有内容放入subString中.

例如:

NSString *mainString = @"My Name is Andrew (I like computers)";
NSString *subString;

//The code I need help with

mainString = @"y Name is Andrew ";
subString = @"I like computers";
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的.这真的对我很有帮助.提前致谢.我一直在玩NSRangeNSMutableStrings,但我有麻烦了.提前致谢.

iphone substring objective-c nsstring nsrange

4
推荐指数
2
解决办法
3216
查看次数

将NSRange内容转换为NSString?

我正在开发一个Cocoa Mac OSX应用程序,我想知道是否有可能通过以下方式呈现NSRange找到的内容:

NSRange range;
range.location = 4;
range.length = 4;
Run Code Online (Sandbox Code Playgroud)

作为一个NSString

例如,在上面的示例中,如果我有一个内容为"abcdefgh"的字符串,则将上述范围的内容显示为字符串将给出"efgh".这可能吗?

macos cocoa nsstring nsrange

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

目标C:NSRange或类似浮动?

对于某些方法,我希望它们返回一系列值(从:235,到:245).我使用它NSRange作为返回值

- (NSRange)giveMeARangeForMyParameter:(NSString *)myParameter;
Run Code Online (Sandbox Code Playgroud)

只要返回值是一个integer范围(例如位置:235,长度:10),这就可以正常工作.

但是现在我遇到了需要返回float范围的问题(例如位置:500.5,长度:0.4).我在doc中读到了NSRange一个typedefed结构NSUIntegers.是否可以为float范围键入另一个结构?如果是这样,是否可以采用类似的方法NSMakeRange(NSUInteger loc, NSUInteger len)来创建这些float范围?

typedef objective-c nsrange

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

如何使用deleteCharactersInRange?

我想调用方法"deleteCharactersInRange"但它不起作用.

这是苹果文档的摘录:

迅速

func deleteCharactersInRange(_ aRange:NSRange)

    var day = ""

    let stringRange:NSRange = NSMakeRange(0, 4)
    day = day.deleteCharacterInRange(stringRange)


    // I've also tried this, because in the Documentation 
    // I can't see wether the method is void or returns a String

    day.deleteCharacterInRange(stringRange)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

'String'没有名为'deleteCharactersInRange'的成员

string nsrange swift

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

斯威夫特3; 范围'越界'

我刚刚将Xcode更新到8.0 beta 2和swift 3.0.从swift 2.3更新后,我遇到了很多错误.

我有一个String-extension,它将"self"-string中的Range转换为NSRange:

extension String {

    func NSRangeFromRange(_ range : Range<String.Index>) -> NSRange {

        let utf16view = self.utf16
        let from = String.UTF16View.Index(range.lowerBound, within: utf16view)
        let to = String.UTF16View.Index(range.upperBound, within: utf16view)

        print("to: \(to) from: \(from)")
        print(self.characters.count)

        return NSMakeRange(utf16view.startIndex.distance(to: from), from.distance(to: to))
    //    return NSMakeRange(0, 0)    // <-- removes exception
    }
}
Run Code Online (Sandbox Code Playgroud)

当执行NSMakeRange时,我收到一个错误:

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

当我打印到索引和索引时,我得到:

to:Index(_offset:194)from:Index(_offset:181)

字符串的字符数210似乎是正确的.

所以,我不明白为什么它告诉我索引是超出界限的,当它们少于总数.

在我更新到swift 3之前,这条线路工作正常.当时它看起来像这样:

return NSMakeRange(utf16view.startIndex.distanceTo(from), from.distanceTo(to))
Run Code Online (Sandbox Code Playgroud)

自动转换器没有将语法从swift 2.3更新到3.0,我自己做了..

有线索吗?

string nsrange swift swift3

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

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

逐个字符地向NSMutableAttributedString添加属性

这是我的情况:

NSMutableAttributedString在文本视图中没有属性.每当用户按下退格键时,我都不希望删除一个字符,我希望它能够被删除,就像生产力套件的"Track Changes"功能一样.我希望用户能够在此之后继续正常输入.这是我开始的方式:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (text.length == 0 && textView.text.length == 0) return YES;

if (text.length == 0 && !([[textView.text substringFromIndex:textView.text.length - 1] isEqualToString:@" "] || [[textView.text substringFromIndex:textView.text.length - 1] isEqualToString:@"\n"])) {

    textView.attributedText = [self strikeText:textView.attributedText];

    textView.selectedRange = NSMakeRange(textView.attributedText.length - 1, 0);

    return NO;
}
return YES;
}

- (NSAttributedString *)strikeText:(NSAttributedString *)text
{
NSRange range;
NSMutableAttributedString *returnValue = [[NSMutableAttributedString alloc] initWithAttributedString:text];

if (![text attribute:NSStrikethroughStyleAttributeName atIndex:text.length - 1 effectiveRange:&range]) {
    NSLog(@"%@", NSStringFromRange(range));
    NSLog(@"%@", …
Run Code Online (Sandbox Code Playgroud)

nsattributedstring ios nsrange

3
推荐指数
2
解决办法
2万
查看次数

Textview scrollRangeToVisible 使范围转到顶部

我正在尝试滚动到位于 UITextView 的属性文本中的特定子字符串。滚动完成后,我希望子字符串位于可见文本视图文本的顶部。但是,当 textView.selectedRange 位于子字符串范围下方时,我只能让子字符串到达​​顶部。无论滚动范围以前位于何处,如何才能使子字符串始终显示在顶部?

这是我当前的代码

   let text =  // a long NSAttributedString
   let substring = "put me at the top!"
   textView.attributedText = text

   func scrollToSubstring() {
      let str = text.string as NSString

      let range = str.rangeOfString(substring, options: .RegularExpressionSearch, range: NSMakeRange(0, str.length), locale: nil)

      textView.scrollRangeToVisible(range)
      // HOW CAN I MAKE IT SO range ALWAYS APPEARS AT THE TOP?
   }
Run Code Online (Sandbox Code Playgroud)

scrollview textview ios nsrange swift

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