let endLoc = startLoc + annotation.range.length - 1
let mySubString = strText![startLoc...endLoc]
strOutput += mySubString + "\n"
}
}
self.txtOutput.text = strOutput
})
}
Swift 字符串切片比想象中复杂!这样做的原因是,攻击应用程序的一种常见方式是使
用字符串和对字符串进行随意切片的代码,这可能会导致缓冲区下溢或缓冲区上溢。因
此,Swift 旨在防止使用你可能熟悉的
Mid()
或
Left()
类型函数进行字符串切片。在前
面的代码中,我们计算了一个
startLoc
和一个
endLoc
,然后将
mySubString
设置为从
开始到结束的切片。这在 Swift 中不受支持,需要扩展才能使其工作。不要在任何类型
的生产应用程序中使用此代码,并在发布任何应用程序之前检查你如何管理字符串!
这是字符串切片扩展的代码:
extension String {
subscript(_ i: Int) -> String {
let idx1 = index(startIndex, offsetBy: i)
let idx2 = index(idx1, offsetBy: 1)
return ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.
O’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
I wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
I’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
I'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.