2013-09-06 13 views
5

Java ma metodę Character.isDefined, ale nie ma odpowiednika na klasie char w .NET.Jaki jest najbliższy odpowiednik Java Character.isDefined w .NET?

Jestem świadomy, że Microsoft's old Java libraries have this, ale nie chcę polegać na tej bibliotece, jeśli mogę tego uniknąć.

Czy jest gdzieś wbudowany odpowiednik w .NET? A może wywołanie wszystkich dostępnych metod .is * w sposób kombinatoryczny daje taki sam wynik? (Np char.IsLetter (x) || char.IsSymbol (x) itp ....)

Odpowiedz

6

można spróbować z

int utf32 = 0x1FFFF; 
string surrogate = Char.ConvertFromUtf32(utf32); 
var isDefined = char.GetUnicodeCategory(surrogate, 0) != UnicodeCategory.OtherNotAssigned; 

Można użyć char.GetUnicodeCategory(char) bezpośrednio, jeśli mają charakter od podstawy BMP.

Należy pamiętać, że każda wersja .NET obsługuje różne wydania Unicode, więc to, co zwróci, zależy od wersji Unicode używanej przez bieżącą wersję .NET/obecnego systemu operacyjnego.

+0

Doskonale, wygląda na to, że bardzo dokładnie odtwarza zachowanie, dzięki! – pattermeister

+0

char.TryParse (firstChar.ToString(), out firstChar) dałoby to trafny wynik? –

+0

@RohitGarg 'char.TryParse' nie sprawdza wartości" Unicode "" char ". Po prostu konwertuje 'string' na' char'. To jest zupełnie bezużyteczne. 'char.TryParse (" A ", out ch)' zwraca ''A'', ale wyraźnie bardziej bezpośrednio" A "[0] ==' A'' – xanatos

Powiązane problemy