我有一个包含多个字符串的大字符串,如下所示:
http://website.com/image.jpg
我希望为每个人添加?w=100
。
到目前为止,我考虑过创建一个正则表达式,每当我遇到该字符串时,它会用添加了?w=100
的相同字符串替换它。
以下是String
的扩展名,用于替换字符串:
public func stringByReplacingMatches(matchRegEx: String, withMatch: String) -> String {
do {
let regEx = try NSRegularExpression(pattern: matchRegEx, options: NSRegularExpressionOptions())
return regEx.stringByReplacingMatchesInString(self, options: NSMatchingOptions(), range: NSMakeRange(0, self.characters.count), withTemplate: withMatch)
} catch {
fatalError("Error in the regular expression: \"\(matchRegEx)\"")
}
}
这就是我使用它的方式:
myString.stringByReplacingMatches("https:\\/\\/website\\.com\\/[\\w\\D]*.jpg", withMatch: "https:\\/\\/website\\.com\\/[\\w\\D]*.jpg?w=100"))
问题,这是我在更换字符串后得到的结果:
https://website.com/[wD]*.jpg?w=100
如何解决我的问题?
答案 0 :(得分:1)
您需要了解capture groups:
myString.stringByReplacingMatches("(https:\\/\\/website\\.com\\/[\\w\\D]*.jpg)", withMatch: "$1?w=100")
哦,别忘了保存返回值
let fixedString = myString.stringByReplacingMatches("(https:\\/\\/website\\.com\\/[\\w\\D]*.jpg)", withMatch: "$1?w=100")
myString
不会更改,但fixedString
将包含所有更新。
<强>更新强>
[\\w\\D]*
匹配任何字符。你需要制作一个更具体的正则表达式。
对于输入"https://website.com/x.jpg" "https://website.com/x.jpg"
,正则表达式\w
有效。
var myString = "\"https://website.com/x.jpg\" \"https://website.com/x.jpg\""
myString = myString.stringByReplacingMatches("(https:\\/\\/website\\.com\\/\\w*.jpg)", withMatch: "$1?w=100")
但这不适用于所有可能的网址。
答案 1 :(得分:1)
你应该把它称为
#!/bin/bash
for src in /Users/dave/biomkr/dat/*/rs/orig/vol_0000.nii
do
srcdir=${src#/Users/dave/biomkr/dat/}
srcdir=${srcdir%/rs/orig/vol_0000.nii}
srcdir="/Users/dave/Documents/MIT_Har_stu/rsfmri/$srcdir/"
mkdir -p "$srcdir"
cp "$src" "$srcdir"
done
模板可以使用myString.stringByReplacingMatches("https:\\/\\/website\\.com\\/[\\w\\D]*.jpg", withMatch: "$0?w=100"))
来显示匹配的字符串。你不应该在那里重复匹配的正则表达式。
答案 2 :(得分:0)
do {
let regex = try NSRegularExpression(pattern: "http:\\/\\/[a-z]*.[a-z]*\\/[a-z]*.[a-z]*", options: .CaseInsensitive)
var newString = regex.stringByReplacingMatchesInString(a, options: NSMatchingOptions(rawValue: 0), range: NSMakeRange(0, a.characters.count), withTemplate: "$0?w=100")
print(newString)
}