2016-09-23 7 views
1

NSString의 특정 부분에서 텍스트를 변경할 수 있습니까? 예를 들어, stringByReplacingOccurrencesOfString을 사용하고 싶지만 문자열의 특정 부분에서만 사용해야합니다. 이 예에서는 #q= 다음에 &lang=en-us 앞에 #을 입력하고 싶습니다. 이처럼 :NSString의 특정 부분 내의 텍스트 바꾸기

초기 문자열 : 그것이로 대체해야 무엇 https://google.com/search#q=hello#&lang=en-us

: https://google.com/search#q=hello%23&lang=en-us

내가 %23# 년대를 교체하도록 지시하는 경우 stringByReplacingOccurrencesOfString 수익률을 사용하여 무엇 : 대한 https://google.com/search%23q=hello%23&lang=en-us

감사합니다 당신의 도움! 당신은 URL 인코딩 기존 문자열에 원하는처럼

+0

무료 답변을 제공하는 Q & A 커뮤니티입니다. 문제를 해결하는 정답을 선택하고 올바른 방향으로 안내 한 답변을 상향 조정하여 커뮤니티에 지불 할 수 있습니다. 이것은 또한 답변을 얻는 기회를 향상시킵니다 – PnotNP

답변

3

귀하의 질문에 직접 대답은 '예, 당신은 stringByReplacingOccurrencesOfString:withString:options:range:을 사용할 수 있습니다에게 제공 ; range 매개 변수는 대체 할 문자열 부분을 지정합니다.

range에 적합한 값을 결정하는 데 도움이되는 NSString이 제공하는 다른 검색 방법이 있습니다.

위에서 말했듯이 접근법은 아마도 "허약하다"- 입력 데이터가 변경되면 쉽게 깨지는 경향이 있습니다. 문자열을 URL로 간주하고 적절한 이스케이프 처리를 사용하여 구성해야합니다. 처음; 또는 부품을 구문 분석하고 이스케이프를 추가 한 다음 다시 어셈블하십시오. 이를 수행하는 데 도움이되는 NSURLNSString에 대한 방법이 있습니다.

HTH

0

이 보인다

없음 오류 검사가 위의 코드에서 수행되지 않습니다
NSString *input = @"https://google.com/search#q=hello%23&lang=en-us"; 
NSURL *url = @"https://google.com/search#q=hello%23&lang=en-us"; 
NSString *params = [url parameterString]; 
NSString *enc = [params stringByAddingPercentEscapesUsingEncoding: 
NSUTF8StringEncoding]; 
//append URLs host+path with enc 

, 그것은 단지 생각

+0

답변 해 주셔서 감사합니다! 이 솔루션의 문제점은 해시 태그와 퍼센트 기호가 올바른 UTF8 인코딩으로 변경된 문자열을 출력하지만 '# q ='부분뿐만 아니라 전체 문자열에 대해이를 수행한다는 것입니다. – Insleep

관련 문제