2017-11-28 18 views
0
私は現在、次のようにフォーマットされた画像のURL文字列を持つAPIを使用しています

スウィフト:複数の区切り文字で区切られた文字列内の数値を置き換え

右の「PX」の前に数値が矛盾している
https://someExampleURL/18px-ImageName.png 

、したがって、私がしたいです同じサイズのイメージをロードするには、この値を静的な値に置き換えます。

私は、文字列 "/"と "px"で文字列を分割し、文字列内の数値を "100"に置き換えることを考えていました。これを達成するための最良の戦略は何でしょうか?

+3

URLは実際には動作しませんので、@Xcoderは、リンクとしてURLを含めるように質問や私の答えを編集しようとしないでください、それが形成要求されたフォーマットを示すQ&Aの両方の重要な部分です。 –

答えて

2

あなたは正規表現を使用することができます。

let link = "https://someexampleurl/18px-ImageName.png" 
let newLink = link.replacingOccurrences(of: "/\\d+px", with: "/100px", options: .regularExpression) 
+0

完璧なソリューション、ありがとう! –

2

このような特定のURL形式では、components(separatedBy:)を使用してURL文字列を最後の/文字で分割し、残りの部分を最初の出現でpx分割することができます。強制アンラッピングを引き続き使用する場合は、URL形式が変更されないようにしてください。

イメージサイズを取得したら、String.replacingCharacters(in:,with:)を使用してサイズを新しい値に変更できます。

let newImageSize = "100" 
let imageUrlString = "https://someExampleURL/18px-ImageName.png" 
let imageSize = imageUrlString.components(separatedBy: "/").last!.components(separatedBy: "px").first! 
let modifiedImageUrlString = imageUrlString.replacingCharacters(in: imageUrlString.range(of: imageSize)!, with: newImageSize) 

結果:

"https://someExampleURL/100px-ImageName.png"

1

あなたはURLで '/' 文字の数を保証することはできますか?

'https://someExampleURL/18px-ImageName.png'.split('/') 

がリストに

['https:', '', 'someExampleURL', '18px-ImageName.png'] 

を返します。その結果、

'https://someExampleURL/18px-ImageName.png'.split('/')[3].split('px') 

は、文字列を分割する方法ですリスト

['18', '-ImageName.png'] 

を返します。あなたがしなければならないのは、あなたが望むビットを置き換えて、それを一緒につなぎ合わせることだけです。

関連する問題