문자열 끝에서 공백을 제거해야합니다. 어떻게해야합니까? 예 : 문자열 인 경우 "Hello "
는이되어야한다"Hello"
문자열 끝에서 공백을 제거해야합니다. 어떻게해야합니까? 예 : 문자열 인 경우 "Hello "
는이되어야한다"Hello"
답변:
이 답변에서 가져 왔습니다 : https : //.com/a/5691567/251012
- (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet {
NSRange rangeOfLastWantedCharacter = [self rangeOfCharacterFromSet:[characterSet invertedSet]
options:NSBackwardsSearch];
if (rangeOfLastWantedCharacter.location == NSNotFound) {
return @"";
}
return [self substringToIndex:rangeOfLastWantedCharacter.location+1]; // non-inclusive
}
whitespaceAndNewlineCharacterSet
.
여기 있습니다 ...
- (NSString *)removeEndSpaceFrom:(NSString *)strtoremove{
NSUInteger location = 0;
unichar charBuffer[[strtoremove length]];
[strtoremove getCharacters:charBuffer];
int i = 0;
for(i = [strtoremove length]; i >0; i--) {
NSCharacterSet* charSet = [NSCharacterSet whitespaceCharacterSet];
if(![charSet characterIsMember:charBuffer[i - 1]]) {
break;
}
}
return [strtoremove substringWithRange:NSMakeRange(location, i - location)];
}
이제 전화하십시오. 앞면에 공백이 있고 끝에 공백이 있고 끝에 공백을 제거하려는 경우 다음과 같이 호출 할 수 있습니다.
NSString *oneTwoThree = @" TestString ";
NSString *resultString;
resultString = [self removeEndSpaceFrom:oneTwoThree];
resultString
그런 다음 끝에 공백이 없습니다.
Swift에서 문자열의 시작과 끝에서만 공백을 제거하려면
string.trimmingCharacters(in: .whitespacesAndNewlines)
string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet()))
stringByTrimmigCharactersInSet:
- "주어진 문자 세트에 포함 된 수신자 문자의 양쪽 끝을 제거하여 작성된 새 문자열을 리턴합니다." developer.apple.com/reference/foundation/nsstring/…
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
//for remove whitespace and new line character
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
[NSCharacterSet punctuationCharacterSet]];
//for remove characters in punctuation category
다른 많은 문자 세트가 있습니다. 요구 사항에 따라 직접 확인하십시오.
스위프트 버전
문자열 끝에서 공백 만 자릅니다.
private func removingSpacesAtTheEndOfAString(var str: String) -> String {
var i: Int = countElements(str) - 1, j: Int = i
while(i >= 0 && str[advance(str.startIndex, i)] == " ") {
--i
}
return str.substringWithRange(Range<String.Index>(start: str.startIndex, end: advance(str.endIndex, -(j - i))))
}
문자열 양쪽의 공백을 잘라냅니다.
var str: String = " Yolo "
var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Objective-C에서 양쪽 끝 대신 한쪽 끝만 자르는 간단한 솔루션 :
@implementation NSString (category)
/// trims the characters at the end
- (NSString *)stringByTrimmingSuffixCharactersInSet:(NSCharacterSet *)characterSet {
NSUInteger i = self.length;
while (i > 0 && [characterSet characterIsMember:[self characterAtIndex:i - 1]]) {
i--;
}
return [self substringToIndex:i];
}
@end
시작 만 다듬기위한 대칭 유틸리티 :
@implementation NSString (category)
/// trims the characters at the beginning
- (NSString *)stringByTrimmingPrefixCharactersInSet:(NSCharacterSet *)characterSet {
NSUInteger i = 0;
while (i < self.length && [characterSet characterIsMember:[self characterAtIndex:i]]) {
i++;
}
return [self substringFromIndex:i];
}
@end
모든 후행 공백 문자 를 다듬기 위해 ( 실제로 당신의 의도 라고 생각합니다 ) 다음은 매우 깨끗하고 간결한 방법입니다.
스위프트 5 :
let trimmedString = string.replacingOccurrences(of: "\\s+$", with: "", options: .regularExpression)
목표 -C :
NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)];
정규식으로 대시가있는 한 줄.
해결책은 여기에 설명되어 있습니다 : NSString의 오른쪽 끝에서 공백을 제거하는 방법?
NSString에 다음 범주를 추가하십시오.
- (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet {
NSRange rangeOfLastWantedCharacter = [self rangeOfCharacterFromSet:[characterSet invertedSet]
options:NSBackwardsSearch];
if (rangeOfLastWantedCharacter.location == NSNotFound) {
return @"";
}
return [self substringToIndex:rangeOfLastWantedCharacter.location+1]; // non-inclusive
}
- (NSString *)stringByTrimmingTrailingWhitespaceAndNewlineCharacters {
return [self stringByTrimmingTrailingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
그리고 당신은 그것을 다음과 같이 사용합니다 :
[yourNSString stringByTrimmingTrailingWhitespaceAndNewlineCharacters]
나는 기본적으로 Alex의 답변에서와 비슷하게 작동하는이 기능을 생각해 냈습니다.
-(NSString*)trimLastSpace:(NSString*)str{
int i = str.length - 1;
for (; i >= 0 && [str characterAtIndex:i] == ' '; i--);
return [str substringToIndex:i + 1];
}
whitespaceCharacterSet
공백 외에도 탭 문자가 포함되어있어 내 경우에는 나타나지 않습니다. 그래서 나는 평범한 비교만으로 충분하다고 생각합니다.
let string = "테스트 된 문자열 테스트"
공백과 줄 바꾸기를 제거하려면 아래 코드를 사용하십시오.
let str_trimmed = yourString.trimmingCharacters (에서 : .whitespacesAndNewlines)
문자열에서 공백 만 제거하려면 아래 코드를 사용하십시오.
let str_trimmed = yourString.trimmingCharacters (에서 : .whitespaces)