2016-08-10 78 views
0

我有一個Url字符串,我想在符號(=)之後插入減號「 - 」。 我有以下字符串: -插入字符在字符串中的特定字符後面:Swift

http://www.corpebl.com/blog.php?show=250 

http://www.bdm.com/gm.php?id=2 

,我想下面的字符串: -

http://www.corpebl.com/blog.php?show=-250 

http://www.bdm.com/gm.php?id=-2 

請儘量避免使用索引c因爲長度每次都是可變的,所以等於(=)的位置也會每次都不相同。

回答

3

您可以使用與=更換= -,通過使用stringByReplacingOccurrencesOfString概念

let aString: String = "http://www.corpebl.com/blog.php?show=250" 
    let newString = aString.stringByReplacingOccurrencesOfString("=", withString: "=-") 
    print(newString) 

輸出

enter image description here

+0

快速回復,不錯(y) – Sahil

3

您應該能夠通過替換來完成與=-

let s = "http://www.corpebl.com/blog.php?show=250" 
let res = s.stringByReplacingOccurrencesOfString("=", withString: "=-", options: NSStringCompareOptions.LiteralSearch, range: nil) 

這是稍微危險的情況下,你必須在字符串中的多個等號。更精確的方法將被定位在第一(或最後)等號,並手動構成所得到的字符串:

let s : NSString = "http://www.corpebl.com/blog.php?show=250" 
let p = s.rangeOfString("=") 
if p.location != NSNotFound { 
    let res : String = s.stringByReplacingCharactersInRange(p, withString: "=-") 
} 
2

NSURLComponents可以訪問和選擇性地修改的URL的每個部分 。下面的例子如何,即使在多個查詢項列表取代 show=<num>通過show=<-num>

var urlString = "http://www.corpebl.com/blog.php?foo&show=250&bar=baz" 

if var urlComponents = NSURLComponents(string: urlString), 
    var queryItems = urlComponents.queryItems { 
    for (idx, query) in queryItems.enumerate() { 
     if query.name == "show", let val = query.value, let num = Int(val) { 
      queryItems[idx] = NSURLQueryItem(name: query.name, value: String(-num)) 
     } 
    } 
    urlComponents.queryItems = queryItems 
    urlString = urlComponents.string! 
} 

print(urlString) // http://www.corpebl.com/blog.php?foo&show=-250&bar=baz 
+0

不錯的一個馬丁,我有同樣的想法,你可以看到:) – pbodsk

+0

@pbodsk:兩個腦海:) –

2

我知道你現在有一個工作的解決方案,但我想我會附和一些更普遍。

如果您想要更多地控制要附加減號的參數,您應該查看NSURLQueryItem類(記錄的here)。

通過使用NSURLComponents類(記錄在案here),您可以將URL分離爲組件,然後可以訪問queryItems陣列。

因此,像:

if let components = NSURLComponents(string: "http://www.corpebl.com/blog.php?show=250"), 
    let queryItems = components.queryItems { 

} 

會給你一個網址,分成從您的字符串的組件,你必須在數組中的查詢項目。現在,您就看個人queryItems:

for item in queryItems where item.value != nil { 
    //here you can check on the item.name 
    //and if that matches whatever you need, you can do your magic 
} 

所以,這將只需添加一個減號所有參數和返回來自該URL字符串的函數可以是這個樣子:

func addMinusToParameters(inURLString urlString: String) -> String? { 
    guard let components = NSURLComponents(string: urlString), 
      let queryItems = components.queryItems else { 
     return nil 
    } 

    var minusItems = [NSURLQueryItem]() 
    for item in queryItems where item.value != nil { 
     minusItems.append(NSURLQueryItem(name: item.name, value: "-\(item.value!)")) 
    } 
    components.queryItems = minusItems 
    guard let minusUrl = components.URL else { 
     return nil 
    } 
    return minusUrl.absoluteString 
} 

和示例:

if let minusString = addMinusToParameters(inURLString: "http://www.corpebl.com/blog.php?show=250&id=23") { 
    print(minusString) //gives you "http://www.corpebl.com/blog.php?show=-250&id=-23" 
} 

是的,這似乎是更多的工作,但我認爲這是更靈活的爲好。

希望你能用這個。

相關問題