如何獲取所有Char[]
的列表,其中函數返回Char.IsSeparator
是否爲真?Char.IsSeparator - 分隔符數組
從微軟的例子中迭代不想。 http://msdn.microsoft.com/ru-ru/library/cta536cf(v=vs.110).aspx
如何獲取所有Char[]
的列表,其中函數返回Char.IsSeparator
是否爲真?Char.IsSeparator - 分隔符數組
從微軟的例子中迭代不想。 http://msdn.microsoft.com/ru-ru/library/cta536cf(v=vs.110).aspx
如果沒有迭代,你無法做到這一點。所有你能做的就是隱藏的方法迭代(或使用包含一個迭代一個現成的方法):
private IEnumerable<char> AllChars()
{
// using the same loop header as the example here:
for (int ctr = Convert.ToInt32(char.MinValue); ctr <= Convert.ToInt32(char.MaxValue); ctr++) {
yield return (char)ctr;
}
}
在該方法中,你可以再使用LINQ functions from the Enumerable
class只提取所有字符的一個子集:
char[] separatorChars = AllChars().Where(char.IsSeparator).ToArray();
的Where
extension method列舉了只有原來的枚舉與條件符合的這些項目 - 作爲char.IsSeparator
method這裏提供。
然後通過ToArray
method將全部字符集中的如此選擇的子集轉換成數組。
我不知道你爲什麼不喜歡MSDN環路,這裏是LINQ相同的( 「循環」):
int charMin = Convert.ToInt32(Char.MinValue);
int charMax = Convert.ToInt32(Char.MaxValue);
List<char> separatorChars = Enumerable.Range(charMin, charMax - charMin + 1)
.Select(i => (Char)i)
.Where(Char.IsSeparator)
.ToList();
\u0020 (SpaceSeparator)
\u00A0 (SpaceSeparator)
\u1680 (SpaceSeparator)
\u2000 (SpaceSeparator)
\u2001 (SpaceSeparator)
\u2002 (SpaceSeparator)
\u2003 (SpaceSeparator)
\u2004 (SpaceSeparator)
\u2005 (SpaceSeparator)
\u2006 (SpaceSeparator)
\u2007 (SpaceSeparator)
\u2008 (SpaceSeparator)
\u2009 (SpaceSeparator)
\u200A (SpaceSeparator)
\u200B (SpaceSeparator)
\u2028 (LineSeparator)
\u2029 (ParagraphSeparator)
\u202F (SpaceSeparator)
\u3000 (SpaceSeparator)
你是說你不想迭代值?即使LINQ查詢也只會在內部進行迭代。 –