Come hai fatto notare, lo non è disponibile su String
class nelle app di Windows Store.
Tuttavia, questo solo chiama il NormalizeString
function nell'API di Windows.
Ancora meglio, questa funzione è in the approved list of Win32 and COM API functions usable in Windows Store apps.
Detto questo, devi fare le seguenti dichiarazioni:
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);
Farebbe quindi chiamarlo in questo modo:
// 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' si basa su funzioni native costruite in normaliz.dll. Ho scavato un po 'e ho scoperto che utilizza la funzione [NormalizeString] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd319093 (v = vs.85) .aspx). Poiché è specifico di Windows, non è disponibile per le app di Windows Store. Sfortunatamente, non ho conoscenza delle alternative. –
@AlexanderManekovskiy Hai torto, ['NormalizeString' è nell'elenco delle funzioni Win32 e COM API utilizzabili nelle app di Windows Store] (http://msdn.microsoft.com/en-us/library/windows/apps/hh452772). – casperOne
@casperOne Wow, dov'erano i miei occhi ?! Grazie per aver puntato su questa lista. –