program story

Objective-C에서 문자열이 비어 있는지 어떻게 테스트합니까?

inputbox 2020. 10. 2. 22:12
반응형

Objective-C에서 문자열이 비어 있는지 어떻게 테스트합니까?


NSStringObjective-C에서이 비어 있는지 어떻게 테스트 합니까?


다음과 같은 경우 확인할 수 있습니다 [string length] == 0. nil을 호출 length하면 0을 반환 하므로 유효하지만 빈 문자열 (@ "")인지 여부와 nil인지 확인합니다 .


마크의 대답이 맞습니다. 하지만 일반화 된 것 윌 쉬 플리에 대한 포인터를 포함하려면이 기회를 걸릴거야 isEmpty그는 자신의 공유, 블로그를 :

static inline BOOL IsEmpty(id thing) {
return thing == nil
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}

첫 번째 방법은 유효하지만 문자열에 공백 ( @" ") 이 있으면 작동하지 않습니다 . 따라서 테스트하기 전에이 공백을 지워야합니다.

이 코드는 문자열 양쪽의 모든 공백을 지 웁니다.

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

한 가지 좋은 아이디어는 하나의 매크로를 만드는 것이므로 다음과 같은 몬스터 라인을 입력 할 필요가 없습니다.

#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]

이제 다음을 사용할 수 있습니다.

NSString *emptyString = @"   ";

if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");

내가 본 최고의 솔루션 중 하나 (Matt G의 것보다 낫다)는 일부 Git Hub 저장소 (Wil Shipley의 저장소에서 선택했지만 링크를 찾을 수 없음)에서 선택한 향상된 인라인 기능입니다.

// Check if the "thing" pass'd is empty
static inline BOOL isEmpty(id thing) {
    return thing == nil
    || [thing isKindOfClass:[NSNull class]]
    || ([thing respondsToSelector:@selector(length)]
        && [(NSData *)thing length] == 0)
    || ([thing respondsToSelector:@selector(count)]
        && [(NSArray *)thing count] == 0);
}

이 범주를 더 잘 사용해야합니다.

@implementation NSString (Empty)

    - (BOOL) isWhitespace{
        return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
    }

@end

나는 이것을 넣었다 :

@implementation NSObject (AdditionalMethod)
-(BOOL) isNotEmpty
{
    return !(self == nil
    || [self isKindOfClass:[NSNull class]]
    || ([self respondsToSelector:@selector(length)]
        && [(NSData *)self length] == 0)
    || ([self respondsToSelector:@selector(count)]
        && [(NSArray *)self count] == 0));

};
@end

문제는 self가 nil이면이 함수가 호출되지 않는다는 것입니다. 원하는 것은 false를 반환합니다.


다음 메소드에 문자열을 전달하십시오.

+(BOOL)isEmpty:(NSString *)str
{
    if(str.length==0 || [str isKindOfClass:[NSNull class]] || [str isEqualToString:@""]||[str  isEqualToString:NULL]||[str isEqualToString:@"(null)"]||str==nil || [str isEqualToString:@"<null>"]){
        return YES;
    }
    return NO;
}

또 다른 옵션은 다음 @""isEqualToString:같이 동일한 지 확인하는 것입니다 .

if ([myString isEqualToString:@""]) {
    NSLog(@"myString IS empty!");
} else {
    NSLog(@"myString IS NOT empty, it is: %@", myString);
}

if else아래 표시된 조건 중 하나를 사용하십시오 .

방법 1 :

if ([yourString isEqualToString:@""]) {
        // yourString is empty.
    } else {
        // yourString has some text on it.
    }

방법 2 :

if ([yourString length] == 0) {
    // Empty yourString
} else {
    // yourString is not empty
}

스위프트 버전

이것이 Objective C 질문이지만 NSStringSwift 에서 사용해야 했기 때문에 여기에 답변을 포함하겠습니다.

let myNSString: NSString = ""

if myNSString.length == 0 {
    print("String is empty.")
}

또는 NSString선택 사항 인 경우 :

var myOptionalNSString: NSString? = nil

if myOptionalNSString == nil || myOptionalNSString!.length == 0 {
    print("String is empty.")
}

// or alternatively...
if let myString = myOptionalNSString {
    if myString.length != 0 {
        print("String is not empty.")
    }
}

일반적인 Swift String버전은

let myString: String = ""

if myString.isEmpty {
    print("String is empty.")
}

참조 : Swift에서 빈 문자열 확인?


이 답변은 이미 주어진 답변의 중복 일 수 있지만 조건 확인 순서대로 수정 및 변경을 거의하지 않았습니다. 아래 코드를 참조하십시오 :

+(BOOL)isStringEmpty:(NSString *)str
    {
        if(str == nil || [str isKindOfClass:[NSNull class]] || str.length==0) {
            return YES;
       }
        return NO;
    }

이 방법을 사용하여 문자열이 비어 있는지 여부를 확인할 수 있습니다.

+(BOOL) isEmptyString : (NSString *)string
{
    if([string length] == 0 || [string isKindOfClass:[NSNull class]] || 
       [string isEqualToString:@""]||[string  isEqualToString:NULL]  ||
       string == nil)
     {
        return YES;         //IF String Is An Empty String
     }
    return NO;
}

모범 사례는 공유 클래스를 UtilityClass라고하고이 메서드를 광고하여 응용 프로그램을 통해 호출하여이 메서드를 사용할 수 있도록하는 것입니다.


문자열이 비어 있는지 여부를 확인하는 두 가지 방법이 있습니다.

문자열 이름이 NSString *strIsEmpty.

방법 1 :

if(strIsEmpty.length==0)
{
    //String is empty
}

else
{
    //String is not empty
}

방법 2 :

if([strIsEmpty isEqualToString:@""])
{
    //String is empty
}

else
{
    //String is not empty
}

위의 방법 중 하나를 선택하고 문자열이 비어 있는지 여부를 확인하십시오.


NSDictionary 지원과 작은 변경 사항을 추가하는 매우 유용한 게시물

static inline BOOL isEmpty(id thing) {
    return thing == nil
    || [thing isKindOfClass:[NSNull class]]
    || ([thing respondsToSelector:@selector(length)]
        && ![thing respondsToSelector:@selector(count)]
        && [(NSData *)thing length] == 0)
    || ([thing respondsToSelector:@selector(count)]
        && [thing count] == 0);
}

간단히 문자열 길이를 확인하십시오.

 if (!yourString.length)
 {
   //your code  
 }

NIL에 대한 메시지는 nil 또는 0을 반환하므로 nil을 테스트 할 필요가 없습니다. :).

행복한 코딩 ...


나에게 매력으로 작용하고있어

는 경우 NSString입니다s

if ([s isKindOfClass:[NSNull class]] || s == nil || [s isEqualToString:@""]) {

    NSLog(@"s is empty");

} else {

    NSLog(@"s containing %@", s);

}

따라서 문자열 길이가 1보다 작은 지 확인하는 기본 개념 외에도 컨텍스트를 깊이 고려하는 것이 중요합니다. 인간 또는 컴퓨터 언어 또는 그렇지 않으면 빈 문자열에 대한 다른 정의가있을 수 있으며 동일한 언어 내에서 추가 컨텍스트가 의미를 추가로 변경할 수 있습니다.

빈 문자열이 "현재 컨텍스트에서 중요한 문자를 포함하지 않는 문자열"을 의미한다고 가정 해 보겠습니다.

이것은 속성 문자열에서 색상과 배경색이 동일하므로 시각적으로 의미 할 수 있습니다. 사실상 비어 있습니다.

이것은 의미있는 문자가 비어 있음을 의미 할 수 있습니다. 모든 점 또는 모든 대시 또는 모든 밑줄은 비어있는 것으로 간주 될 수 있습니다. 또한 의미있는 중요한 문자가 비어 있으면 독자가 이해할 수있는 문자가없는 문자열을 의미 할 수 있습니다. 독자에게 의미없는 것으로 정의 된 언어 또는 characterSet의 문자 일 수 있습니다. 우리는 문자열이 주어진 언어에서 알려진 단어를 형성하지 않는다고 말하는 것을 약간 다르게 정의 할 수 있습니다.

비어있는 것은 렌더링 된 글리프의 음수 공간 비율의 함수라고 말할 수 있습니다.

일반적인 시각적 표현이없는 일련의 인쇄 불가능한 문자조차도 실제로 비어 있지 않습니다. 제어 문자가 떠 오릅니다. 특히 낮은 ASCII 범위 (일반적으로 글리프와 시각적 메트릭이 없기 때문에 많은 시스템을 호스로 사용하고 공백이 아니기 때문에 아무도 언급하지 않은 것에 놀랐습니다). 그러나 문자열 길이는 0이 아닙니다.

결론. 여기에서 길이 만 측정하는 것은 아닙니다. 상황 별 집합 멤버십도 매우 중요합니다.

문자 집합 구성원은 매우 중요한 공통 추가 측정입니다. 의미있는 시퀀스도 상당히 일반적입니다. (SETI 또는 crypto 또는 captchas를 생각하십시오) 추가적인 추상 컨텍스트 세트도 존재합니다.

따라서 문자열이 길이나 공백에 의해서만 비어 있다고 가정하기 전에 신중하게 생각하십시오.


- (BOOL)isEmpty:(NSString *)string{
    if ((NSNull *) string == [NSNull null]) {
        return YES;
    }
    if (string == nil) {
        return YES;
    }
    if ([string length] == 0) {
        return YES;
    }
    if ([[string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) {
        return YES;
    }
    if([[string stringByStrippingWhitespace] isEqualToString:@""]){
        return YES;
    }
    return NO;
}

The best way is to use the category.
You can check the following function. Which has all the conditions to check.

-(BOOL)isNullString:(NSString *)aStr{
        if([(NSNull *)aStr isKindOfClass:[NSNull class]]){
            return YES;
        }
        if ((NSNull *)aStr  == [NSNull null]) {
            return YES;
        }
        if ([aStr isKindOfClass:[NSNull class]]){
            return YES;
        }
        if(![[aStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]){
            return YES;
        }
        return NO;
    }

The best way in any case is to check the length of the given string.For this if your string is myString then the code is:

    int len = [myString length];
    if(len == 0){
       NSLog(@"String is empty");
    }
    else{
      NSLog(@"String is : %@", myString);
    }

if (string.length == 0) stringIsEmpty;

check this :

if ([yourString isEqualToString:@""])
{
    NsLog(@"Blank String");
}

Or

if ([yourString length] == 0)
{
    NsLog(@"Blank String");
}

Hope this will help.


You can easily check if string is empty with this:

if ([yourstring isEqualToString:@""]) {
    // execute your action here if string is empty
}

I have checked an empty string using below code :

//Check if we have any search terms in the search dictionary.
if( (strMyString.text==(id) [NSNull null] || [strMyString.text length]==0 
       || strMyString.text isEqual:@"")) {

   [AlertView showAlert:@"Please enter a valid string"];  
}

Its as simple as if([myString isEqual:@""]) or if([myString isEqualToString:@""])


//Different validations:
 NSString * inputStr = @"Hey ";

//Check length
[inputStr length]

//Coming from server, check if its NSNull
[inputStr isEqual:[NSNull null]] ? nil : inputStr

//For validation in allowed character set
-(BOOL)validateString:(NSString*)inputStr
{
    BOOL isValid = NO;
    if(!([inputStr length]>0))
    {
        return isValid;

    }

    NSMutableCharacterSet *allowedSet = [NSMutableCharacterSet characterSetWithCharactersInString:@".-"];
    [allowedSet formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]];
    if ([inputStr rangeOfCharacterFromSet:[allowedSet invertedSet]].location == NSNotFound)
    {
        // contains only decimal set and '-' and '.'

    }
    else
    {
        // invalid
        isValid = NO;

    }
    return isValid;
}

if(str.length == 0 || [str isKindOfClass: [NSNull class]]){
    NSLog(@"String is empty");
}
else{
    NSLog(@"String is not empty");
}    

You can have an empty string in two ways:

1) @"" // Does not contain space

2) @" " // Contain Space

Technically both the strings are empty. We can write both the things just by using ONE Condition

if ([firstNameTF.text stringByReplacingOccurrencesOfString:@" " withString:@""].length==0)
{
    NSLog(@"Empty String");
}
else
{
    NSLog(@"String contains some value");
}

Try the following

NSString *stringToCheck = @"";

if ([stringToCheck isEqualToString:@""])
{
   NSLog(@"String Empty");
}
else
{
   NSLog(@"String Not Empty");
}

if( [txtMobile.text length] == 0 )
{
    [Utility showAlertWithTitleAndMessage: AMLocalizedString(@"Invalid Mobile No",nil) message: AMLocalizedString(@"Enter valid Mobile Number",nil)];
}

참고URL : https://stackoverflow.com/questions/899209/how-do-i-test-if-a-string-is-empty-in-objective-c

반응형