Wie Sie darauf hingewiesen haben, ist die Normalize
method nicht in den String
class Windows Store-Apps verfügbar.
Allerdings ruft dies nur die NormalizeString
function in der Windows-API.
Noch besser ist diese Funktion in the approved list of Win32 and COM API functions usable in Windows Store apps.
Das heißt, würden Sie die folgenden Erklärungen abgeben:
public enum NORM_FORM
{
NormalizationOther = 0,
NormalizationC = 0x1,
NormalizationD = 0x2,
NormalizationKC = 0x5,
NormalizationKD = 0x6
};
[DllImport("Normaliz.dll", CharSet = CharSet.Unicode, ExactSpelling = true,
SetLastError = true)
public static extern int NormalizeString(NORM_FORM NormForm,
string lpSrcString,
int cwSrcLength,
StringBuilder lpDstString,
int cwDstLength);
Sie würden es dann rufen Sie wie folgt:
// The form.
NORM_FORM form = ...;
// String to normalize.
string unnormalized = "...";
// Get the buffer required.
int bufferSize =
NormalizeString(form, unnormalized, unnormalized.Length, null, 0);
// Allocate the buffer.
var buffer = new StringBuilder(bufferSize);
// Normalize.
NormalizeString(form, unnormalized, unnormalized.Length, buffer, buffer.Length);
// Check for and act on errors if you want.
int error = Marshal.GetLastWin32Error();
'String .Normalize' basiert auf nativen Funktionen, die in normaliz.dll erstellt wurden. Ich grub ein bisschen und fand, dass es [NormalizeString] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd319093 (v = vs.85) .aspx) -Funktion verwendet. Da es für Windows spezifisch ist, ist es nicht für Windows Store Apps verfügbar. Leider habe ich kein Wissen über Alternativen. –
@AlexanderManekovskiy Sie haben sich geirrt, ['NormalizeString' ist in der Liste der zugelassenen Win32- und COM-API-Funktionen in Windows Store-Apps enthalten] (http://msdn.microsoft.com/en-us/library/windows/apps/hh452772). – casperOne
@casperOne Wow, wo waren meine Augen ?! Danke, dass Sie auf diese Liste zeigen. –