Я работаю над проектом второстепенной стороны в F #, который включает перенос существующего кода C# на F #, и я, похоже, обнаружил разницу в том, как регулярные выражения обрабатываются между двумя языками (я отправляю это, надеюсь, узнаю, что я просто делаю что-то не так).Ошибка обнаружения суррогатной пары
Эта второстепенная функция просто обнаруживает суррогатные пары, используя трюк регулярного выражения, обозначенный here. Вот текущая реализация:
let isSurrogatePair input =
Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]")
Если я затем выполнить его против известного суррогатной пары, как это:
let result = isSurrogatePair "野"
printfn "%b" result
я false
в окне FSI.
Если я использую эквивалент C#:
public bool IsSurrogatePair(string input)
{
return Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]");
}
И такое же значение входного сигнала, I (правильно) получить true
обратно.
Это настоящая проблема? Я просто делаю что-то не так в моей реализации F #?