我正在尝试从变量 str 中获取“src”...“data-lazy-”中的字符串,并且当我对其进行硬编码时它会起作用...
var str = "<h1 style=\"font-family: Helvetica\">Hello Pizza</h1><p>Tap the buttons above to see <strong>some cool stuff</strong> with <code>UIWebView</code><p><img src=\"https://apppie.files.wordpress.com/2014/09/photo-sep-14-7-40-59-pm_small1.jpg\" data-lazy-src=\"xxxxxxx\">"
str.rangeOfString(" src")?.startIndex
str.rangeOfString("data-lazy-")?.endIndex
let myNSString = str as NSString
myNSString.substringWithRange(NSRange(location: 150, length: 245-150))
结果:src=\"https://apppie.files.wordpress.com/2014/09/photo-sep-14-7-40-59-pm_small1.jpg\" data-lazy-
在这里,我试图不对其进行硬编码......
var str = "<h1 style=\"font-family: Helvetica\">Hello Pizza</h1><p>Tap the buttons above to see <strong>some cool stuff</strong> with <code>UIWebView</code><p><img src=\"https://apppie.files.wordpress.com/2014/09/photo-sep-14-7-40-59-pm_small1.jpg\" data-lazy-src=\"xxxxxxx\">"
str.rangeOfString(" src")?.startIndex
str.rangeOfString("data-lazy-")?.endIndex
let myNSString = str as NSString
let start = str.startIndex.toInt()
let end = str.endIndex.toInt()
myNSString.substringWithRange(NSRange(location: start, length: end - start))
上面的代码显示错误消息 'String.index'没有名为'toInt'的成员 我的问题是我怎么能解决这个问题? 对不起,我是一个相当新的快速编程语言。
答案 0 :(得分:1)
施法不是问题。
方法substringWithRange()
接受Range
的参数 - 一个Swift范围 - 并且可以使用Range
类型的参数创建String.Index
。因此使用:
// I'm ignoring optionals; this code is unsafe and thus only an example
let beg = str.rangeOfString(" src")!
let end = str.rangeOfString("data-lazy-")!
str.substringWithRange(Range(start: beg.endIndex, end: end.startIndex))
具体做法是:
15> var str = "abc src=def xyz"
str: String = "abc src=def xyz"
16> var si = str.rangeOfString("src=")!
si: Range<String.Index> = { ... }
17> var ei = str.rangeOfString(" xyz")!
ei: Range<String.Index> = { ... }
18> str.substringWithRange(Range (start: si.endIndex, end: ei.startIndex))
$R3: String = "def"
不要对'String.Index'中的'Index'这个词感到困惑 - 这与s[i]
中的'i'不同。 String.Index
是不透明的数据类型;它的行为更像是一个指针(用类C语言)。 String.Index
在Swift字符串的Unicode世界中有很多要考虑的因素。