your programing

C #에서 문자열을 다른 문자열로 분할

lovepro 2020. 10. 2. 22:59
반응형

C #에서 문자열을 다른 문자열로 분할


나는 Split()문자열을 분할 하는 방법을 사용해 왔지만 문자열을 문자로 분할하는 경우에만 작동하는 것처럼 보입니다. 을 분할하는 방법이 string있습니까? 다른 문자열은 매개 변수로 분할됩니까?

운이 좋지 않고 스플리터를 문자 배열로 변환하려고 시도했습니다.

즉, 다음을 분할하고 싶습니다 string.

THExxQUICKxxBROWNxxFOX

xx, 값이있는 배열을 반환합니다.

더, 퀵, 브라운, 폭스


문자열로 분할하려면 string array overload 를 사용해야합니다 .

string data = "THExxQUICKxxBROWNxxFOX";

return data.Split(new string[] { "xx" }, StringSplitOptions.None);

문자열을 취하는 Split과부하 가 있습니다.

"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);

다음 StringSplitOptions 중 하나를 사용할 수 있습니다.

  • 없음 -반환 값에 빈 문자열이 포함 된 배열 요소가 포함됩니다.
  • RemoveEmptyEntries- 반환 값에 빈 문자열이 포함 된 배열 요소가 포함되지 않습니다.

따라서 문자열이 "THExxQUICKxxxxBROWNxxFOX"이면 StringSplitOptions.None"xxxx"부분에 대해 배열에 빈 항목을 반환 하지만 그렇지 않은 경우에는 반환합니다 StringSplitOptions.RemoveEmptyEntries.


Regex.Split(string, "xx")

제가 보통하는 방식입니다. 물론 당신은

using System.Text.RegularExpressions;

하지만 다시 한 번 그 라이브러리가 항상 필요합니다.


이를 위해 String.Split 오버로드가 있습니다 .

"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);

나는 일반적으로 내 확장을 사용하는 것을 좋아합니다.

string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE  QUICK  BROWN  FOX 


//the extension class must be declared as static
public static class StringExtension
{   
    public static string[] Split(this string str, string splitter)
    {
        return str.Split(new[] { splitter }, StringSplitOptions.None);
    }
}

그러나 Microsoft가 이후 버전에이 메서드 오버로드를 포함하기로 결정하면 예외가 발생합니다. Microsoft가 그동안이 방법을 포함하지 않은 이유이기도합니다. 제가 근무한 회사 중 하나 이상이 모든 C # 프로젝트에서 이러한 확장을 사용했습니다.

It may also be possible to conditionally define the method at runtime if it doesn't exist.


string data = "THExxQUICKxxBROWNxxFOX";

return data.Replace("xx","|").Split('|');

Just choose the replace character carefully (choose one that isn't likely to be present in the string already)!


The previous answers are all correct. I go one step further and make C# work for me by defining an extension method on String:

public static string[] Split(this string toSplit, string splitOn) {
    return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
}

That way I can call it on any string in the simple way I naively expected the first time I tried to accomplish this:

"a big long string with stuff to split on".Split("g str");

As of .NET Core 2.0, there is an override that takes a string.

So now you can do "THExxQUICKxxBROWNxxFOX".Split("xx").

See https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_


This is also easy:

string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

The easiest way is to use String.Replace:

string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");

Or more simply:

string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");

참고URL : https://stackoverflow.com/questions/2245442/split-a-string-by-another-string-in-c-sharp

반응형