C#에서 문자열을 다른 문자열로 분할
제가 사용해 온 것은Split()
문자열을 분할하는 방법이지만 문자열을 문자로 분할하는 경우에만 작동하는 것으로 나타납니다.둘로 나눌 수 있는 방법이 있습니까?string
매개 변수별로 분할된 다른 문자열로?
저는 스플리터를 캐릭터 배열로 변환해봤지만, 실패했습니다.
다시 말해서, 저는 그것을 나누고 싶습니다.string
:
THE xxQUICK xxxBROWN xxx 폭스
타고xx
값이 있는 배열을 반환합니다.
더, 퀵, 브라운, 폭스
문자열로 분할하려면 문자열 배열 오버로드를 사용해야 합니다.
string data = "THExxQUICKxxBROWNxxFOX";
return data.Split(new string[] { "xx" }, StringSplitOptions.None);
편집: 최신/낮은 버전 오버로드는 @Danation의 답변을 참조하십시오.
문자열을 사용하는 분할의 오버로드가 있습니다.
"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);
다음 StringSplit 옵션 중 하나를 사용할 수 있습니다.
- 없음 - 반환 값에 빈 문자열이 포함된 배열 요소가 포함됩니다.
- Remove EmptyEntries - 반환 값에 빈 문자열이 포함된 배열 요소가 포함되어 있지 않습니다.
그래서 만약 문자열이 "THE xxQUICKxxxxBROWN xxxxx"라면,StringSplitOptions.None
다음 시간 동안 "xxxx" 부분에 대한 어레이의 빈 항목을 반환합니다.StringSplitOptions.RemoveEmptyEntries
하지 않을 것이다.
Regex.Split(string, "xx")
제가 평소에 하는 방식입니다.
물론 다음이 필요합니다.
using System.Text.RegularExpressions;
또는 :
System.Text.RegularExpressions.Regex.Split(string, "xx")
하지만 한편으로는 저는 항상 그 도서관이 필요합니다.
"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# 프로젝트에서 이러한 확장 기능을 사용했습니다.
또한 메서드가 없는 경우 런타임에 조건부로 메서드를 정의할 수도 있습니다.
.NET Core 2.0부터는 문자열을 사용하는 재정의가 있습니다.
이제 할 수 있습니다."THExxQUICKxxBROWNxxFOX".Split("xx")
.
https://learn.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_ 을 참조하십시오.
이전 답들은 모두 정답입니다.한 단계 더 나아가 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");
string data = "THExxQUICKxxBROWNxxFOX";
return data.Replace("xx","|").Split('|');
바꾸기 문자를 신중하게 선택하십시오(문자열에 아직 없을 것 같은 문자를 선택하십시오)!
이 함수를 먼저 만듭니다.
string[] xSplit(string str, string sep) {
return str.Split(new [] {sep}, StringSplitOptions.None);
}
그러면 이렇게 써주세요.
xSplit("THExxQUICKxxBROWNxxFOX", "xx");
이는 또한 쉽습니다.
string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
가장 쉬운 방법은 사용하는 것입니다.String.Replace
:
string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");
또는 더 간단하게:
string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");
언급URL : https://stackoverflow.com/questions/2245442/split-a-string-by-another-string-in-c-sharp
'programing' 카테고리의 다른 글
주입 방법에 대한 간단한 설명이 필요합니다. (0) | 2023.06.01 |
---|---|
DTO를 도메인 개체에 매핑하기 위한 모범 사례? (0) | 2023.06.01 |
CSS를 사용하여 HTML 입력의 자리 표시자 색 변경 (0) | 2023.06.01 |
루비의 CSV로 배열 출력 (0) | 2023.06.01 |
CSS 디스플레이 속성의 전환 (0) | 2023.06.01 |