programing

문자열에서 공백을 지정하는 가장 좋은 방법입니다.분할 작업입니다.

jooyons 2023. 4. 25. 22:16
반응형

문자열에서 공백을 지정하는 가장 좋은 방법입니다.분할 작업입니다.

공백을 기준으로 다음과 같이 문자열을 분할합니다.

string myStr = "The quick brown fox jumps over the lazy dog";

char[] whitespace = new char[] { ' ', '\t' };
string[] ssizes = myStr.Split(whitespace);

코드의 모든 부분에 char[] 배열을 정의하는 것이 귀찮습니다. 이 작업을 수행하고자 합니다.문자 배열(다른 위치에 복사할 경우 오류가 발생하기 쉬운)을 생성하지 않아도 되는 보다 효율적인 방법이 있습니까?

전화만 주시면 됩니다.

string[] ssize = myStr.Split(null); //Or myStr.Split()

또는 다음을 참조하십시오.

string[] ssize = myStr.Split(new char[0]);

그러면 공백이 분할 문자로 간주됩니다.메서드의 설명서 페이지에서 확인할 수 있습니다.

구분 매개 변수가 다음과 같은 경우입니다.null또는 문자가 포함되지 않은 경우 공백 문자가 구분자로 간주됩니다.공백 문자는 유니코드 표준에 의해 정의되며 반환됩니다.true메서드로 전달되는지 확인합니다.

항상 설명서를 읽으십시오!

예, 여기에 한 가지 답이 더 필요합니다!

지금까지의 모든 솔루션은 요소 간의 단일 공백 문자(적어도 문제를 언급하기 위해 @cherno의 끝 부분)라는 다소 제한된 표준 입력 영역을 다루고 있습니다.하지만 저는 가장 불명확한 시나리오를 제외한 모든 시나리오에서 이 모든 것을 분할하면 동일한 결과를 얻을 수 있다는 것을 제안합니다.

string myStrA = "The quick brown fox jumps over the lazy dog";
string myStrB = "The  quick  brown  fox  jumps  over  the  lazy  dog";
string myStrC = "The quick brown fox      jumps over the lazy dog";
string myStrD = "   The quick brown fox jumps over the lazy dog";

String.Split(다른 답변에 나오는 어떤 맛에서도) 그냥 잘 되지 않습니다 (이것들 중에서 어떤 맛에서도) (이것만 있으면 됩니다.) (이것만 있으면 됩니다.)RemoveEmptyEntries이겁니다.

myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)

알 수 있듯이 이 을 생략하면 4가지 다른 결과(A, B, C 및 D 레이블로 지정됨)가 됩니다. 즉, 네 가지 입력에서 모두 단일 결과(A, B, C, D)를 사용할 경우,RemoveEmptyEntries다음을 참조하십시오

String.Split vs Regex입니다.

물론 옵션 사용이 싫으면 regex 대체 옵션을 사용하십시오. :-)

Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)

설명서에 따르면 다음과 같습니다.

구분 매개 변수가 null이거나 문자가 없는 경우 공백 문자가 구분자로 간주됩니다.공백 문자는 유니코드 표준에 의해 정의되며 문자(Char)에 전달될 경우 true를 반환합니다.IsWhiteSpace 메서드입니다.

그러니까 그냥 전화해 주세요.myStr.Split();세퍼레이터는 세퍼레이터이기 때문에 아무것도 제출할 필요가 없습니다.paramsmailanda입니다.

왜 사용하지 않습니까?

string[] ssizes = myStr.Split(' ', '\t');

인접한 공백은 사용하는 경우에도 단일 구분 기호로 처리되지 않습니다.String.Split(null). 여러 개의 공백이나 탭으로 구분된 토큰이 있으면 배열에 빈 문자열이 반환됩니다 여러 개의 공백이나 탭으로 구분된 토큰이 있으면 배열에 빈 문자열이 반환됩니다.

설명서에서 다음을 참조하십시오.

구분 기호의 각 요소는 별도의 구분 기호를 정의합니다.두 개의 구분 기호가 인접해 있거나 이 인스턴스의 시작 또는 끝에 구분 기호가 있는 경우 해당 배열 요소는 비어 있습니다.

그러니 복사해서 붙여넣지 마세요!분할할 함수를 추출하여 재사용합니다.

public static string[] SplitWhitespace (string input)
{
    char[] whitespace = new char[] { ' ', '\t' };
    return input.Split(whitespace);
}

코드 재사용은 여러분의 친구입니다.

사용할 수 있습니다.

var FirstString = YourString입니다.분할()입니다.먼저();

문자열을 분할하고 공백 전에 첫 번째 문자열을 가져옵니다.

인라인으로 할 수 없어요?

var sizes = subject.Split(new char[] { ' ', '\t' });

그렇지 않으면 이 작업을 자주 수행하면 항상 상수 또는 해당 문자 배열이 포함된 항목을 생성할 수 있습니다.

다른 사람들이 언급한 바와 같이 설명서에 따라 다음을 사용할 수도 있습니다.null또는 빈 배열입니다.이렇게 하면 자동으로 공백 문자가 사용됩니다.

var sizes = subject.Split(null);

그냥 이렇게 하는 게 어때요?

var ssizes = myStr.Split(" \t".ToCharArray());

에 방법이 있는 것 같습니다.NET 4.0입니다!

편집: VMAtm에서 지적한 대로 이 방법은 에 이미 있습니다.NET 2.0입니다!

동일한 코드를 반복하는 것이 문제라면 분할 논리를 캡슐화하는 확장 메서드를 String 클래스에 작성합니다.

다음을 수행할 수 있습니다.

string myStr = "The quick brown fox jumps over the lazy dog";
string[] ssizes = myStr.Split(' ');

MSDN에는 다음과 같은 더 많은 예와 참조가 있습니다.

http://msdn.microsoft.com/en-us/library/b873y76a.aspx

언급URL : https://stackoverflow.com/questions/6111298/best-way-to-specify-whitespace-in-a-string-split-operation 입니다.

반응형