Split()
문자열을 분할 하는 방법을 사용 했지만 문자열을 문자로 분할하는 경우에만 작동하는 것으로 보입니다. string
매개 변수로 분할 된 다른 문자열 로을 분할하는 방법이 있습니까?
스플리터를 문자 배열로 변환하려고 시도했지만 운이 없습니다.
다시 말해, 나는 다음과 같이 나누고 싶다 string
.
THExxQUICKxxBROWNxxFOX
by xx
을 입력하고 값이 포함 된 배열을 반환합니다.
빠른, 갈색, 여우
Split()
문자열을 분할 하는 방법을 사용 했지만 문자열을 문자로 분할하는 경우에만 작동하는 것으로 보입니다. string
매개 변수로 분할 된 다른 문자열 로을 분할하는 방법이 있습니까?
스플리터를 문자 배열로 변환하려고 시도했지만 운이 없습니다.
다시 말해, 나는 다음과 같이 나누고 싶다 string
.
THExxQUICKxxBROWNxxFOX
by xx
을 입력하고 값이 포함 된 배열을 반환합니다.
빠른, 갈색, 여우
답변:
문자열로 나누려면 문자열 배열 overload 를 사용해야합니다 .
string data = "THExxQUICKxxBROWNxxFOX";
return data.Split(new string[] { "xx" }, StringSplitOptions.None);
string.Split
.
string[] Split(string pattern)
내가 생각할 수있는 가장 자연스러운 사용법입니다. 전에 C를 작성하여 배열을 char하는 데 익숙했지만 char[]
C # 코드에서 팝업이 나타나는 것을 싫어 합니다. 갑자기 스트림 레벨에서 바이트 레벨로 관심을 끌기 때문입니다. C # 라이브러리 사용자가 왜 Split 메서드를 이와 같이 디자인했는지 아는 사람이 있습니까? 합당한 이유가 있다면 불편을 겪음에도 불구하고 감사 할 수 있습니다.
data.Split("xx")
?
문자열 을 사용하는 Split 의 과부하 가 있습니다.
"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);
이 StringSplitOptions 중 하나를 사용할 수 있습니다
따라서 문자열이 "THExxQUICKxxxxBROWNxxFOX"인 StringSplitOptions.None
경우 배열에서 "xxxx"부분에 대한 빈 항목을 반환하지만 StringSplitOptions.RemoveEmptyEntries
그렇지 않습니다.
Regex.Split(string, "xx")
내가 보통하는 방식입니다.
물론 다음이 필요합니다.
using System.Text.RegularExpressions;
또는 :
System.Text.RegularExpressions.Regex.Split(string, "xx")
그러나 다시는 항상 그 라이브러리가 필요합니다.
RegEx.Split
a가 단순한 것보다 약간 더 비싸다는 것을 알고 있어야합니다 String.Split
.
Regex.Escape
먼저 문자열을 사용 하면 정규식 메타 문자가 이스케이프됩니다.
이에 대한 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가 이후 버전에서이 메소드 오버로드를 포함하기로 결정하면 예외가 발생합니다. 마이크로 소프트가 그동안이 방법을 포함시키지 않은 이유이기도하다. 내가 일한 회사 중 적어도 하나는 모든 C # 프로젝트에서 그러한 확장을 사용했다.
메소드가 존재하지 않는 경우 런타임에 조건부로 메소드를 정의 할 수도 있습니다.
params string[] splitter
번째 매개 변수 변화 등을 new[] {splitter}
하는 splitter
다수의 분리를 지원한다.
이전 답변이 모두 맞습니다. 한 단계 더 나아가 String에 확장 메소드 를 정의하여 C #이 작동하도록합니다 .
public static class Extensions
{
public static string[] Split(this string toSplit, string splitOn) {
return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
}
}
그렇게하면 처음으로 이것을 달성하려고 시도했을 때 순진하게 예상했던 간단한 방법으로 모든 문자열에서 호출 할 수 있습니다.
"a big long string with stuff to split on".Split("g str");
.NET Core 2.0부터는 문자열을 사용하는 재정의가 있습니다.
이제 할 수 있습니다 "THExxQUICKxxBROWNxxFOX".Split("xx")
.
https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_를 참조 하십시오.
string data = "THExxQUICKxxBROWNxxFOX";
return data.Replace("xx","|").Split('|');
바꾸기 문자를 신중하게 선택하십시오 (이미 문자열에 없을 가능성이 높은 문자를 선택하십시오)!
|
이미 문자 가 포함되어 있다면 어떻게해야 한다고 생각합니다.
이것은 또한 쉽다 :
string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
"THExQUICK"
우리가 나누기를 원하지 않는 곳 에서도 나뉘어 질 것입니다
가장 쉬운 방법은 다음을 사용하는 것입니다 String.Replace
.
string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");
또는 더 간단하게 :
string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");
xx
.