2017-11-28 2 views
0
나는 현재이 같은 형식 이미지 URL 문자열과 API를 사용하고

:스위프트 : 여러 구분 기호로 구분 된 문자열에서 숫자 값을 교체

바로 "픽셀"전에 숫자 값이 일치하지 않는
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'] 

에게 반환 목록을 반환합니다. 당신이해야 할 일은 원하는 비트를 대체하고 그것을 다시 연결하는 것입니다.

관련 문제