source

IsNullOr 또는 Empty와 IsNullOr의 차이C#의 WhiteSpace

ittop 2023. 8. 5. 10:59
반응형

IsNullOr 또는 Empty와 IsNullOr의 차이C#의 WhiteSpace

C#에서 이러한 명령 간의 차이점은 무엇입니까?

string text= "  ";
1-string.IsNullOrEmpty(text.Trim())

2-string.IsNullOrWhiteSpace(text)

IsNullOrWhiteSpace는 우수한 성능을 제공한다는 점을 제외하고는 다음 코드와 유사한 편의성 방법입니다.

return String.IsNullOrEmpty(value) || value.Trim().Length == 0;

공백 문자는 유니코드 표준에 의해 정의됩니다.IsNullOrWhiteSpace메소드는 true 값을 반환하는 문자를 해석합니다. 값이 true 값으로 전달될 때Char.IsWhiteSpace공백 문자로서의 메서드입니다.

단답:

일반적으로 사용되는 공간" ""\t"그리고 새로운 라인"\n"차이점은 다음과 같습니다.

string.IsNullOrWhiteSpace("\t"); //true
string.IsNullOrEmpty("\t"); //false

string.IsNullOrWhiteSpace(" "); //true
string.IsNullOrEmpty(" "); //false

string.IsNullOrWhiteSpace("\n"); //true
string.IsNullOrEmpty("\n"); //false

https://dotnetfiddle.net/4hkpKM

참고 항목답변 정보: 공백 문자


긴 답변:

또한 몇 개의 다른 공백 문자도 있습니다. 아마도 당신은 전에 사용한 적이 없을 것입니다.

  • 유니코드 카테고리의 구성원입니다.문자를 포함하는 공백 구분 기호 범주SPACE (U+0020), NO-BREAK SPACE (U+00A0), OGHAM SPACE MARK (U+1680), EN QUAD (U+2000), EM QUAD (U+2001), EN SPACE (U+2002), EM SPACE (U+2003), THREE-PER-EM SPACE (U+2004), FOUR-PER-EM SPACE (U+2005), SIX-PER-EM SPACE (U+2006), FIGURE SPACE (U+2007), PUNCTUATION SPACE (U+2008), THIN SPACE (U+2009), HAIR SPACE (U+200A), NARROW NO-BREAK SPACE (U+202F), MEDIUM MATHEMATICAL SPACE (U+205F), and IDEOGRAPHIC SPACE (U+3000).
  • 유니코드 카테고리의 구성원입니다.Line Separator 범주는 다음 항목으로만 구성됩니다.LINE SEPARATOR character (U+2028).
  • 유니코드 카테고리의 구성원입니다.단락 구분자 범주는 단독으로 구성됩니다.PARAGRAPH SEPARATOR character (U+2029).
  • 캐릭터들CHARACTER TABULATION (U+0009), LINE FEED (U+000A), LINE TABULATION (U+000B), FORM FEED (U+000C), CARRIAGE RETURN (U+000D), and NEXT LINE (U+0085).

https://learn.microsoft.com/en-us/dotnet/api/system.char.iswhitespace

첫 번째 방법은 문자열이 null인지 빈 문자열인지 확인합니다.이 예제에서는 트리밍하기 전에 null을 확인하지 않으므로 null 참조를 사용할 위험이 있습니다.

1- string.IsNullOrEmpty(text.Trim())

두 번째 방법은 문자열이 null인지 또는 문자열의 임의 공백 수(공백 문자열 포함)인지 확인합니다.

2- string .IsNullOrWhiteSpace(text)

방법IsNullOrWhiteSpace표지 설명IsNullOrEmpty하지만 그것은 또한 돌아옵니다.true문자열에 공백 문자만 포함된 경우.

구체적인 예에서 2) 접근법에서 null 참조 예외의 위험을 실행할 때 사용해야 합니다. null일 수 있는 문자열에 대해 트림을 호출하기 때문입니다.

String.IsNullOrEmpty(string value)돌아온다true문자열이 null이거나 비어 있는 경우.참고로 빈 문자열은 "(두 개의 이중 따옴표 문자)로 표시됩니다.

String.IsNullOrWhitespace(string value)돌아온다true문자열이 null이거나 비어 있거나 공백 또는 탭과 같은 공백 문자만 포함된 경우.

공백으로 계산되는 문자를 보려면 다음 링크를 참조하십시오. http://msdn.microsoft.com/en-us/library/t809ektx.aspx

이것은 디컴파일 후 메소드 구현입니다.

    public static bool IsNullOrEmpty(String value) 
    {
        return (value == null || value.Length == 0); 
    }

    public static bool IsNullOrWhiteSpace(String value) 
    {
        if (value == null) return true; 

        for(int i = 0; i < value.Length; i++) { 
            if(!Char.IsWhiteSpace(value[i])) return false; 
        }

        return true;
    }

그래서 IsNullOr은 명백합니다.또한 WhiteSpace 메서드는 전달되는 값에 공백이 포함되어 있는지 확인합니다.

공백은 https://msdn.microsoft.com/en-us/library/system.char.iswhitespace(v=vs.110).aspx 을 참조합니다.

문자열(의 경우 는 만의당문열자변경수우당신의신약당▁()▁variable▁if변▁(수열경▁your우자in문▁string의▁casetext)이 수 큰 null은 null입니다. 이것은 큰 차이를 만듭니다.

1-string.IsNullOrEmpty(text.Trim())--> null 객체의 호출 모드 이후 예외

2-string.IsNullOrWhiteSpace(text)으로 null을 하고 있기 .

첫 번째 옵션을 사용하여 동일한 동작을 제공하려면 먼저 Null이 아닌지 확인한 후 트림() 방법을 사용해야 합니다.

if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }

String.IsNullOr화이트스페이스(텍스트)는 공백이 있는문자열도 포함하지만 다른 텍스트는 포함하지 않으므로 대부분의 경우 사용해야 합니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here
            var str = "";
            
            Console.WriteLine(string.IsNullOrWhiteSpace(str));              
            
        }
    }
}

True가 반환됩니다!

[성능 테스트] 혹시나 궁금해 하는 사람이 있을지도 몰라 스톱워치 테스트에서 비교.

if(통과 없음)자르기().길이 > 0)

if (!string)IsNull 또는화이트스페이스(패스 없음)



결과는 다음과 같습니다.

트리밍 길이(빈 값 = 15)

값이 비어 있지 않은 트림 길이 = 52


IsNull 또는빈 값을 가진 WhiteSpace = 11

IsNull 또는빈 값이 아닌 WhiteSpace = 12

언급URL : https://stackoverflow.com/questions/18710644/difference-between-isnullorempty-and-isnullorwhitespace-in-c-sharp

반응형