programing

목표-C - 문자열에서 마지막 문자 제거

testmans 2023. 4. 20. 20:08
반응형

목표-C - 문자열에서 마지막 문자 제거

iOS용 Objective-C에서 버튼 동작을 사용하여 문자열의 마지막 문자를 삭제하려면 어떻게 해야 합니까?

컨트롤러 클래스에서 Interface Builder에서 버튼을 잠글 액션메서드를 만듭니다.이 메서드에서는 다음과 같이 문자열을 트리밍할 수 있습니다.


if ([string length] > 0) {
    string = [string substringToIndex:[string length] - 1];
} else {
    //no characters to delete... attempting to do so will result in a crash
}






코드 한 줄만으로 이 작업을 수행할 수 있는 고급 방법을 원하는 경우 다음과 같이 쓸 수 있습니다.

string = [string substringToIndex:string.length-(string.length>0)];

* 화려한 한 줄 코드 스니펫 설명 :

삭제할 문자가 있는 경우(즉, 문자열 길이가 0보다 큼)
     (string.length>0)돌아온다1따라서 코드가 반환됩니다.
          string = [string substringToIndex:string.length-1];

삭제할 문자가 없는 경우(즉, 문자열 길이가 0 이하)
     (string.length>0)돌아온다0따라서 코드가 반환됩니다.
          string = [string substringToIndex:string.length-0];
추락을 막을 수 있습니다.

NSMutableString(동적으로 변경하기 때문에 권장)인 경우 다음을 사용할 수 있습니다.

[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];

여기서 설명하는 솔루션은 실제로는 멀티바이트 유니코드 문자("구성된 문자")를 고려하지 않으므로 유니코드 문자열이 비활성화될 수 있습니다.

실제로 iOS 헤더 파일에는 다음과 같은 선언이 포함되어 있습니다.substringToIndex에는 다음 코멘트가 포함되어 있습니다.

힌트: range Of Composed Character Sequences For Range와 함께 사용: 합성된 문자의 분해를 방지합니다.

를 사용하여 마지막 문자를 올바르게 삭제하는 방법을 참조하십시오.

서류는 당신의 친구입니다.NSString는 콜을 지원합니다.substringWithRange단축된 문자열을 반환할 수 있습니다.의 인스턴스는 변경할 수 없습니다.NSString그것은 불변의 것이다.를 가지고 있는 경우NSMutableString라고 하는 메서드가 있습니다.deleteCharactersInRange스트링을 변경할 수 있습니다.

...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...

언급URL : https://stackoverflow.com/questions/1082178/objective-c-remove-last-character-from-string

반응형