對于以下代碼...IEnumerable<string> items=searchterms.Trim().Split(Environment.NewLine.ToCharArray());
foreach (var item in items) {我在每個 searchterm 項目之間得到一個長度為 0 的項目。我在其他地方使用過類似的代碼并沒有遇到這個,所以不確定為什么現(xiàn)在會發(fā)生這種情況。我需要在這里添加什么來擺脫這些額外的條目?也就是說,項目的數(shù)量與輸入中的術(shù)語數(shù)量相匹配。我有一個解決方法(跳過長度為 0 的項目),但數(shù)字不匹配很煩人,我想修復(fù)它以顯示進度。即 items.count 的第 i+1 項。PS 這是在 UWP 上的 Xamarin Forms 中。謝謝,唐納德。
2 回答

侃侃爾雅
TA貢獻1801條經(jīng)驗 獲得超16個贊
問題是您按 char 數(shù)組拆分,{ '\r', '\n' }
這意味著任一符號都被視為分隔符,而不是 的整個序列"\r\n"
,即中間有一個空字符串"\r\n"
。
要按整個序列拆分,僅使用一個元素的字符串?dāng)?shù)組
IEnumerable<string> items = searchterms.Trim().Split(new string[] { Environment.NewLine, }, StringSplitOptions.None);
"\r\n"
除非字符串中有連續(xù)的,否則這不會產(chǎn)生空項。如果您還想在這種情況下刪除空項目,您可以使用RemoveEmptyEntries
字符串拆分選項。
IEnumerable<string> items = searchterms.Trim().Split(new string[] { Environment.NewLine, }, StringSplitOptions.RemoveEmptyEntries);

牧羊人nacy
TA貢獻1862條經(jīng)驗 獲得超7個贊
由于換行符由 2 個字符組成(在大多數(shù)系統(tǒng)上都是 \r 和 \n),您可能會得到一個額外的空字符串作為這些字符之間的字符串。
試試這個:
IEnumerable<string> items=searchterms.Trim().Split(new string[] {Environment.NewLine}, StringSplitOptions.None); foreach (var item in items) {
- 2 回答
- 0 關(guān)注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消