Sto lavorando a un progetto secondario in F # che implica il porting di codice C# esistente su F # e apparentemente ho notato una differenza nel modo in cui le espressioni regolari vengono gestite tra le due lingue (sto postando questo spero di scoprire che sto solo facendo qualcosa di sbagliato).Impossibile trovare il rilevamento di coppie di surrogati
Questa funzione secondaria rileva semplicemente le coppie surrogate utilizzando il trucco di espressione regolare delineato here. Ecco l'implementazione corrente:
let isSurrogatePair input =
Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]")
Se dunque io eseguo contro una coppia di surrogati noto come questo:
let result = isSurrogatePair "野"
printfn "%b" result
ottengo false
nella finestra FSI.
Se io uso l'equivalente C#:
public bool IsSurrogatePair(string input)
{
return Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]");
}
E lo stesso valore d'ingresso, I (correttamente) ottengo true
indietro.
È un vero problema? Sto semplicemente facendo qualcosa di sbagliato nella mia implementazione F #?