如何从string转换为int

时间:2015-03-03 03:13:28

标签: ios swift

我正在尝试从变量 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'的成员  我的问题是我怎么能解决这个问题? 对不起,我是一个相当新的快速编程语言。

1 个答案:

答案 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世界中有很多要考虑的因素。