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&lt;String.Index&gt;,而不是NSRange。 您不能将结果分配给NSRange 的变量。

返回的RangestartIndex 指向找到的第一个字符,返回的RangeendIndex 指向找到的最后一个字符的下一个。

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中字符串的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

PB中取字符串子串的函数是啥

字符串子串去重之后的个数

2022华为机试真题 C++ 实现 字符串子序列II

华为OD机试真题Java实现判断字符串子序列真题+解题思路+代码(2022&2023)

求字符串不同子串个数

sql server 里类似replace的字符串子串删除