2012-11-09 2 views
0

필자는 .NET CF에서 문자열을 분할하려했지만 성공하지 못했습니다. 난 같은 문자열했을 경우 .Net CF의 String.Split 개행

그럼 내가 개별적으로 넣을 수 있도록 각 단어는 문자열 배열에 저장할

안녕하세요

세계 내 DataGrid 셀에.

불행하게도, 내가 나던 한이 코드는 새로운 라인을 제거하는 것 :

string text = _scanResult; //Scan result contains the Hello There World string 
string[] lines = text.Split(new Char[] {'\n','\r'); 
for (int x = 0; x < lines.Length; x++) 
{ 
    dt.Rows.Add(lines[x]); 
} 
dataGrid1.DataSource = dt; 

답변

2

사용 Environment.NewLine 대신 사용할 StringSplitOptions.RemoveEmptyEntries :

string[] lines = text.Split(new string[] {Environment.NewLine}, 
          StringSplitOptions.RemoveEmptyEntries); 
+3

그러나 .NET Compact Framework에서는 [] 숯불 []하지 문자열을 지원합니다. –

+0

@jeraldov - 공정합니다. 위의 코드는'new Char [] { '\ n', '\ r'}'에서도 사용할 수 있습니다. – Oded

+0

'\ n'과 '\ r'을 별도의 문자로 사용하면 빈 항목이 생깁니다. LINQ는'.Where (line =>! string.IsNullOrEmpty (line)) '와 같은 것을 사용하여 (.ToList를 변환하기 전에)이 항목을 제외 할 수 있습니다. –

0

음, 문자 만이 매개 변수로 인정되기 때문에 .NET Compact Framework에서 String.Split.

"\ n"문자로 새 줄 바꾸기 만하면됩니다.

다음은 앞으로 동일한 문제가 발생할 수있는 사람들을위한 코드입니다.

string text = stringWithNewLines; 
text = text.Replace(Environment.NewLine,"\n"); 
string[] lines = text.Split(new Char[] { '\n' }); 
for (int x = 0; x < lines.Length; x++) 
{ 
    if (!String.IsNullOrEmpty(lines[x])) 
    { 
    dt.Rows.Add(lines[x]); //Add each string to datatable rows for use in datagrid 
    } 
} 
+0

'lines [x]! = ""'를'!'로 대체하여 투표하십시오! String.IsNullOrEmpty (lines [x])' – jp2code

+1

편집 됨. lines [x]! = ""! String.IsNullOrEmpty (lines [x]) –

0

이것은 아주 간단 버전 :

var _scanResult = "foo\r\nbar\r\n"; 

var lines = System.Text.RegularExpressions.Regex.Split(_scanResult, "\r\n") 
      .Where(l => !string.IsNullOrEmpty(l)); 
+0

명심하십시오. 이전 모바일은 LINQ보다 선행합니다. 나는 그것을 좋아한다! – jp2code