- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解析一条可能包含网址的推文。我想在推文的其余部分中用不同的颜色/字体格式化 url。很明显,url 可以放在文本中的任何位置。所以我有一个看起来像这样的类别方法:
NSString *urlString = @"";
NSRange startRange = [self rangeOfString:@"http://" options:NSCaseInsensitiveSearch];
if (startRange.length) {
NSString *subStr = [self substringFromIndex:startRange.location];
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSRange endRange = [subStr rangeOfCharacterFromSet:set];
if (endRange.length) {
NSRange finalRange;
finalRange.location = startRange.location;
finalRange.length = endRange.location - 1;
NSString *finalString = [self substringWithRange:finalRange];
debugTrace(@"finalString : %@", finalString);
}
}
return urlString;
所以基本上我在文本中找到 http://
的范围,然后从那里到末尾创建一个子字符串。从那里我寻找第一个 whitespaceAndNewlineCharacterSet
并将其用作 url 的结尾以找到 finalString
。然而,行
NSRange endRange = [subStr rangeOfCharacterFromSet:set];
返回垃圾值,这让我觉得我没有使用正确的 NSCharacterSet
来查找 endRange
endRange 打印说明:
(NSRange) endRange = location=2147483647, length=0
我该怎么做才能找到 URL 的结束位置。
最佳答案
正如我在评论中提到的,它不是垃圾范围值,它是 NSNotFound
的表示。这意味着您传递给它的字符串中没有出现任何空格或换行符(这是一个有效的案例)。因此,我们需要为此做好准备。
根据您的代码,我将其更改为检查 NSNotFound
。此外,无需从 finalRange 长度中减去 1。当我测试这个代码示例时,它从我的 URL 字符串中裁剪了最后一个字符。评论已添加到更改/查询行的末尾。
NSString *urlString = @""; // Is this being used?
NSRange startRange = [self rangeOfString:@"http://" options:NSCaseInsensitiveSearch];
if (startRange.length) {
NSString *subStr = [self substringFromIndex:startRange.location];
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSRange endRange = [subStr rangeOfCharacterFromSet:set];
if (endRange.location == NSNotFound) { // Check for NSNotFound
debugTrace(@"finalString : %@", subStr);
}
else if (endRange.length) {
NSRange finalRange;
finalRange.location = startRange.location;
finalRange.length = endRange.location; // No need to subtract 1
NSString *finalString = [self substringWithRange:finalRange];
debugTrace(@"finalString : %@", finalString);
}
}
return urlString;
我已经简单地测试过了,它似乎有效。
关于ios - 如何在 NSString 中找到 END_OF_LINE 或 WHITESPACE 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837565/
请参阅此示例: http://jsfiddle.net/EwtaC/1/ 图像通过display:inline-block设置样式。我知道空格会以某种方式对此产生影响..(无论出于何种原因)所以我删除
我在这里设置了一个 CSS 菜单: http://pans.saebermedia.com/ 问题是,我注意到 IE 无法正确显示菜单,现在我又开始使用装有 IE8 的计算机来修复它。我正在使用兼容模
如果你尝试这样做: var x = document.createElement("div"); x.appendChild(document.createTextNode(" te
我创建了一个报表,该报表的左侧有一个图像,该图像根据传递给该报表的参数有条件地可见。页面右侧还有另一个文本框。 我观察到,当图像的“隐藏”属性设置为“True”时,右侧的文本框将保留在正确的位置。当图
Closed. This question is off-topic。它当前不接受答案。 想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭
当我使用 ``# `` 在我的 Sphinx 文档中,我收到以下警告: WARNING: Inline literal start-string without end-string. 试 :samp
我正在尝试对 Linux 系统上具有 Windows 行结尾的文件应用补丁,但由于文件中的回车符而出现冲突。 -l 选项(忽略空格)不会忽略 EOL 字符。 有没有办法获得补丁来忽略Windows风格
您实际上如何更改vscode的“editor.tabSize”和“editor.insertSpaces”值?我打开了文件>首选项>用户设置,并添加了: // Place your settings
有谁知道一个命令行 exe/工具可以 可靠 从 C# 语言的行尾修剪空格? 最佳答案 它必须是命令行吗? Visual Studio 会在你做 Format Document 时( Ctrl+E+D
尝试创建一个背景色为白色的内容框。它位于页眉 div 和页脚 div 之间,它们都是图像。我无法让它与两个 div 对齐并且没有空白,只有一个或另一个。 这是 CSS: #content {
我想要对空白进行精细控制,但仍然有可读的模板。 只是想通过简单的用例看看其他人的解决方案。 {{name}} {{#if age}} , {{age}} {{/if}} # outputs {{n
如果我在Atom设置中选择Show Invisibles,则所有不可见的字符都变为可见: 我想隐藏EOL,因为它们会污染 View 。 这是可以实现的吗? 最佳答案 没有ui选项,但是可以通过Atom
我知道之前已经有人问过如何用前导空格分割字符串的问题,例如: String str = " I want to be split \t!" String[] sarr = str.split("\\
我不确定 slider 顶部和底部的额外空白来自哪里。是填充还是边距?如果有人可以帮助我,我将不胜感激。 jsfiddle.net/fH3EL 最佳答案 这是因为 bx-slider CSS 文件造成
我有一种自定义脚本语言,我正在尝试使用 XTEXT 进行语法检查。它归结为格式为单行命令 COMMAND:PARAMETERS 在大多数情况下,xtext 运行良好。我目前遇到的唯一问题是如何处理需要
我有一个包含超过 1,000,000 个条目的数据库,其中一些在值的开头/结尾包含空格字符。 我已经尝试了以下查询并且它有效,但我将不得不检查 1,000,000 条记录,因为所有 ID 都是唯一的
Perl 6 清除了其前身中的一些奇怪情况,不允许在某些地方使用空格,但在其他地方也执行工作。空间在哪里重要?有一个完整的引用会很好,因此我添加了一个社区 wiki 答案,我会用你的代表答案来更新。示
我想知道有什么方法可以在 Doxygen 的 html 的评论中插入空格吗?我在网上和 Doxygen 手册上搜索过,但找不到任何可以做到这一点的东西。 例如,我试图添加评论如下: //! mot
有人可以澄清一下空格在 Perl 6 语法中的规则中什么时候很重要吗?我通过反复试验学习了一些,但似乎无法在文档中找到实际规则。 示例 1: rule number { \d '.'? \d
我有一个代码库,由于尾随空格而使我发疯。我想把它清理干净。 我想: 删除所有尾随空格 删除文件末尾的所有换行符 将所有行尾转换为 unix (dos2unix) 将所有前导空格转换为制表符,即将 4
我是一名优秀的程序员,十分优秀!