Swift中字符串的子字符串
Posted
技术标签:
【中文标题】Swift中字符串的子字符串【英文标题】:Substring from String in Swift 【发布时间】:2016-08-03 12:39:51 【问题描述】:我有代码可以从Swift
中的字符串中找出子字符串,请帮忙!
我查找子字符串 http://corbpl.com/groupinfo.php?show=95
的代码是:-
var aString: String = "href=http://www.corpbpl.com/groupinfo.php?show=95 onmousedown=uaction(this,up:'90de%=%Nofi7rO6B&l=8upb1p&E%=6&ex=jXTDh5zYQLa9&);"
var hashtag: NSRange = aString.rangeOfString("http://")
var word: NSRange =
aString.substringFromIndex(aString.startIndex.advancedBy(hashtag.location))
【问题讨论】:
展示你在 Swift 中的尝试。 是的,我已经完成了告诉 【参考方案1】:您应该保留原始的 Objective-C 代码来说明您想要做什么。 (我的意思是你的帖子应该包含原始代码,以及你到目前为止所做的事情。)
你的输入字符串应该是这样的字符串文字:
var aString = "href=\"http://www.corpbpl.com/groupinfo.php?show=95\" onmousedown=\"uaction(this,up:'90de%=%Nofi7rO6B&l=8upb1p&E%=6&ex=jXTDh5zYQLa9&)\""
在 Swift 2 中:
if let
hashtag = aString.rangeOfString("http://"),
word = aString.rangeOfString("95", range: hashtag.startIndex..<aString.endIndex)
let hashtagWord = aString[hashtag.startIndex..<word.endIndex]
print(hashtagWord) //->http://www.corpbpl.com/groupinfo.php?show=95
在 Swift 3 中:
if
let hashtag = aString.range(of: "http://"),
let word = aString.range(of: "95", range: hashtag.lowerBound..<aString.endIndex)
let hashtagWord = aString[hashtag.lowerBound..<word.upperBound]
print(hashtagWord) //->http://www.corpbpl.com/groupinfo.php?show=95
几点:(使用 Swift 2 术语)
Swift String 的rangeOfString(_:)
方法返回Range<String.Index>
,而不是NSRange
。
您不能将结果分配给NSRange
的变量。
返回的Range
的startIndex
指向找到的第一个字符,返回的Range
的endIndex
指向找到的最后一个字符的下一个。
rangeOfString(_:options:range:locale:)
方法(在上面的代码中似乎是 rangeOfString(_:range:)
)比创建子字符串更适合在有限范围内搜索字符串。
【讨论】:
【参考方案2】:试试这个,
let aString: String = "href=http://www.corpbpl.com/groupinfo.php?show=95 onmousedown=uaction(this,up:'90de%=%Nofi7rO6B&l=8upb1p&E%=6&ex=jXTDh5zYQLa9&);"
var arr = aString.componentsSeparatedByString(" ")
let newStr = arr[0] as String
var resultStr = newStr.stringByReplacingOccurrencesOfString("href=", withString: "")
【讨论】:
【参考方案3】:斯威夫特 2.x
var aString = "href=http://www.corpbpl.com/groupinfo.php?show=95 onmousedown=uaction(this,up:'90de%=%Nofi7rO6B&l=8upb1p&E%=6&ex=jXTDh5zYQLa9&);"
var hashtag = aString.rangeOfString("http://")
var word = aString.rangeOfString("95")
var hashtagWord = aString.substringWithRange(Range<String.Index>(start: hashtag!.startIndex.advancedBy(0), end: word!.endIndex.advancedBy(0)))
print(hashtagWord)
输出:
http://corbpl.com/groupinfo.php?show=95
【讨论】:
以上是关于Swift中字符串的子字符串的主要内容,如果未能解决你的问题,请参考以下文章