我正在尝试提出一种算法来查找文本正文中的URL.我目前有以下代码(这是我坐下来破解代码,我知道必须有更好的方法):
statusText.text = @"http://google.com http://www.apple.com www.joshholat.com";
NSMutableArray *urlLocations = [[NSMutableArray alloc] init];
NSRange currentLocation = NSMakeRange(0, statusText.text.length);
for (int x = 0; x < statusText.text.length; x++) {
currentLocation = [[statusText.text substringFromIndex:(x + currentLocation.location)] rangeOfString:@"http://"];
if (currentLocation.location > statusText.text.length) break;
[urlLocations addObject:[NSNumber numberWithInt:(currentLocation.location + x)]];
}
currentLocation = NSMakeRange(0, statusText.text.length);
for (int x = 0; x < statusText.text.length; x++) {
currentLocation = [[statusText.text substringFromIndex:(x + currentLocation.location)] rangeOfString:@"http://www."];
if (currentLocation.location > statusText.text.length) break;
[urlLocations addObject:[NSNumber numberWithInt:(currentLocation.location + x)]];
}
currentLocation = NSMakeRange(0, …Run Code Online (Sandbox Code Playgroud) 比方说我有:
this - is an - example - with some - dashes
NSRange 将使用`rangeOfString:@" - 来接收" - "的第一个实例 - "但如果我只想要最后一个怎么办?
我在寻找的东西的工作原理类似于lastIndexOf在JS.谢谢!
来自苹果的文档:
返回值 描述 range1 和 range2 的交集的范围,即包含存在于两个范围中的索引的范围。
讨论 如果返回的范围的长度字段为 0,则两个范围不相交,并且位置字段的值未定义。
好的,假设我有两个范围:
(lldb) p rangeOne
(NSRange) $3 = location=11, length=4
(lldb) p rangeTwo
(NSRange) $4 = location=14, length=0
Run Code Online (Sandbox Code Playgroud)
我计算交集:
NSRange intersection = NSIntersectionRange(rangeOne, rangeTwo);
Run Code Online (Sandbox Code Playgroud)
结果是:
(lldb) p intersection
(NSRange) $5 = location=14, length=0
Run Code Online (Sandbox Code Playgroud)
我该怎么办?长度为零,所以位置未定义?但在这种情况下,结果正是我所期望的;我可以相信吗?计算一个范围长度为零的范围的交集是否无效?
如果 case 1 : range1 是 (5,10) 而 range2 是 (8,0) 它应该返回true。情况 2 : range1 是 (5,10) 并且 range2 是 (5,4) 它应该返回true。case 3 如果 range1 是 (5,10) 而 range2 是 (14,20) 它应该返回 true。如何实现一个在所有情况下都返回 true 的函数。我想检查一个范围是否与另一个范围相交或完全在其中。
我有一个非常简单的问题,但是我不知道如何从头脑中接近它.我想得到我的NSString的两个部分的范围.
我有一段时间,比方说9:42,我想隔离字符串的小时和分钟部分的NSRange,所以字符串前面的部分,以及之后的部分.
有没有人有最好的方法来解决这个问题?谢谢!
我试图写这个没有点符号,但无法弄清楚:
[[textField text] rangeOfCharacterFromSet:someInstanceVar].location
Run Code Online (Sandbox Code Playgroud)
我一直在 bad receiver type NSRange (aka '_struct NSRange')
这不可能吗?
亲切的问候
如何NSAttributedString使用ranged属性初始化?
就目前而言,我只能弄清楚如何在初始化后添加一个ranged属性,这显然不适用于不可变NSAttributedString实例.
如果我有NSMutableAttributedString,我可以打电话:
[str addAttribute:NSLinkAttributeName value:url range:range];
Run Code Online (Sandbox Code Playgroud)
如果我有NSAttributedString,我可以构建它:
[[NSAttributedString alloc] initWithString:str attributes:@{NSLinkAttributeName: url}];
Run Code Online (Sandbox Code Playgroud)
但我找不到将范围放入attributesDict的方法.
谢谢,
我有一个NSString:
NSString *string1 = @"http://example.com/this-is-an-example-post"
Run Code Online (Sandbox Code Playgroud)
通过删除一系列特征,我将其包含在:
NSString *string2 = @"this-is-an-example-post"
Run Code Online (Sandbox Code Playgroud)
但我正在努力将其纳入以下形式:
NSString *string3 = @"this is an example post"
Run Code Online (Sandbox Code Playgroud)
有帮助吗?非常感激.
nsrange ×8
objective-c ×6
ios ×5
nsstring ×2
algorithm ×1
cocoa-touch ×1
foundation ×1
ios7 ×1
string ×1
swift ×1
url ×1