답변:
시험
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
참고로 Foreach 메서드는 매개 변수에 대해 Action (T를 취하고 void를 반환)을 취하고 람다는 문자열을 문자열로 반환합니다.
Foreach 확장 메서드는 컬렉션 내의 개체 상태를 수정하기위한 것입니다. 문자열은 변경할 수 없으므로 효과가 없습니다.
그것이 도움이되기를 바랍니다; o)
세드릭
ForEach
은 확장 방법이 아닙니다.
Regex를 사용해보십시오.
List<string> parts = System.Text.RegularExpressions.Regex.Split(line, @"\s*;\s*").ToList();
분할은 string [] 유형을 반환합니다. 확장 메소드 작성 :
public static string[] SplitTrim(this string data, char arg)
{
string[] ar = data.Split(arg);
for (int i = 0; i < ar.Length; i++)
{
ar[i] = ar[i].Trim();
}
return ar;
}
나는 당신의 솔루션이 마음에 들었 기 때문에 그것에 추가하고 더 유용하게 만들기로 결정했습니다.
public static string[] SplitAndTrim(this string data, char[] arg)
{
return SplitAndTrim(data, arg, StringSplitOptions.None);
}
public static string[] SplitAndTrim(this string data, char[] arg,
StringSplitOptions sso)
{
string[] ar = data.Split(arg, sso);
for (int i = 0; i < ar.Length; i++)
ar[i] = ar[i].Trim();
return ar;
}
정규식 사용
string a="bob, jon,man; francis;luke; lee bob";
String pattern = @"[,;\s]";
String[] elements = Regex.Split(a, pattern).Where(item=>!String.IsNullOrEmpty(item)).Select(item=>item.Trim()).ToArray();;
foreach (string item in elements){
Console.WriteLine(item.Trim());
결과:
단발
존
남자
프랜시스
루크
남자 이름
단발
패턴 설명 [,; \ s] :,; 또는 공백 문자
ForEach
현재 인스턴스에서 작동 하고을 반환하므로 오류가IEnumerable
반환void
됩니다.