배열의 모든 문자열 트리밍
다음과 같은 문자열이 있습니다.
string email = "a@a.com, b@b.com, c@c.com";
나는 그것을 문자열 배열로 나누고 싶다.
이렇게하면 :
string[] emails = email.Split(',');
각 이메일 주소 앞에 공백이 있습니다 (첫 번째 주소 뒤에).
emails[0] = "a@a.com"
emails[1] = " b@b.com"
emails[2] = " c@c.com"
이것을 얻는 가장 좋은 방법은 무엇입니까 (파싱하는 더 좋은 방법 또는 배열의 모든 문자열을 자르는 방법)?
emails[0] = "a@a.com"
emails[1] = "b@b.com"
emails[2] = "c@c.com"
모든 공백을 바꿀 수도 있으므로 foreach 루프를 피할 수 있습니다.
string email = "a@a.com, b@b.com, c@c.com";
string[] emails = email.Replace(" ", "").Split(',');
emails.Split(',').Select(email => email.Trim()).ToArray()
다음 중 하나가 작동합니다. 첫 번째는 결합 문자열을 더 정확하게 표현하기 때문에 추천합니다.
string[] emails = email.Split(new string[] { ", " }, StringSplitOptions.None);
string[] emails = email.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
Trim ()을 사용할 수 있습니다.
string email = "a@a.com, b@b.com, c@c.com";
string[] emails = email.Split(',');
emails = (from e in emails
select e.Trim()).ToArray();
Regex.Split
트리밍을 피하기 위해 사용
var emails = Regex.Split(email, @",\s*");
다음과 같은 한 줄 솔루션을 사용할 수 있습니다.
string[] emails = text.Split(',', StringSplitOptions.RemoveEmptyEntries);
Array.ForEach<string>(emails, x => emails[Array.IndexOf<string>(emails, x)] = x.Trim());
또는 다음 형식의 정규식을 사용하여 분할 할 수 있습니다.
\s*,\s*
즉
string[] emails = Regex.Split(email, @"\s*,\s*");
주변 공간을 직접 소비합니다.
정규식은 일반적으로 성능 저하가 있지만 제공 한 예제는 짧은 배열에 대해 코드에서 한 번 수행 할 계획임을 나타냅니다.
Bryan Watts의 대답은 우아하고 간단합니다. 그는 Split ()에 의해 생성 된 문자열 배열을 암시 적으로 참조합니다.
또한 파일을 읽고 배열을 구축하는 동안 데이터를 마사지하려는 경우 확장성에 유의하십시오.
string sFileA = @"C:\Documents and Settings\FileA.txt";
string sFileB = @"C:\Documents and Settings\FileB.txt";
// Trim extraneous spaces from the first file's data
string[] fileAData = (from line in File.ReadAllLines( sFileA )
select line.Trim()).ToArray();
// Strip a second unneeded column from the second file's data
string[] fileBData = (from line in File.ReadAllLines( sFileB )
select line.Substring( 0, 21 ).Trim()).ToArray();
물론 원하는 경우 Linq => 표기법을 사용할 수 있습니다.
string[] fileBData = File.ReadAllLines( sFileB ).Select( line =>
line.Substring( 0, 21 ).Trim()).ToArray();
내 답변이 댓글로 게시되어야했지만 아직 댓글을 달 수있는 평판 포인트가 충분하지 않습니다. 하지만이 토론은 ReadAllLines ()를 사용하는 동안 데이터를 마사지하는 방법을 알아내는 데 매우 중요하다는 것을 알았습니다.
사용 String.Trim
A의 foreach
루프는, 또는 당신은 3.5 LINQ 문을 .NET을 사용하는 경우.
배열을 반환하지 않고 항목을 조작해야하는 경우 :
string[] emails = text.Split(',');
Array.ForEach(emails, e => e.Trim());
참고URL : https://stackoverflow.com/questions/1355704/trim-all-strings-in-an-array
'Programing' 카테고리의 다른 글
중복 기호 문제 (0) | 2020.11.29 |
---|---|
ExecJS :: ProgramError : 예상치 못한 토큰 구두점«(», 레이크 자산 실행시«:»예상 구두점 : 프로덕션에서 사전 컴파일 (0) | 2020.11.29 |
앱 호환성 이후 Searchview가 작동하지 않습니다. (0) | 2020.11.29 |
Python의 NIC에서 IP 주소를 얻으려면 어떻게해야합니까? (0) | 2020.11.29 |
Windows에서 긴 경로를 삭제하는 방법. (0) | 2020.11.29 |