Как узнать, что строка содержит символ unicode в C#?
Я столкнулся с ситуацией, когда я хочу проверить, содержит ли данная строка символ Юникода или нет?Как это сделать?
Что я уже пробовал:
строковый ввод = " не английский";
if (input.Любой(c => c > 255))
{
// Юникод
}
Правильно ли это?
Sinisa Hajnal
Это сработало бы...но я считаю, что это было бы быстрее с string.indexof вместо лямбда-выражения.
Member 11589429
Спасибо за ответ....
Sergey Alexandrovich Kryukov
Это неправильный вопрос. Символ не может быть Юникодом или не Юникодом. Это культурное образование. С точки зрения Юникода, все символы являются символами Юникода. Например, символы ASCII также являются символами Unicode.
Вы можете задать такой вопрос только в том случае, если назовете какой-то другой стандарт и захотите выяснить, как он связан с юникодом. Например, вы можете взять ASCII и задать вопрос: "Как узнать, содержит ли строка хотя бы один символ, который не поддерживается ASCII"? Вам не нужно упоминать слово "Unicode", потому что понятие .NET string подразумевает, что это всегда Unicode (внутреннее представление UTF-16LE, кстати).
Кстати, это не имеет никакого отношения к английскому. Знаете ли вы, что в английском языке на самом деле используются символы, отличные от ASCII? В современных условиях без поддержки юникода может быть написан только довольно неграмотный английский текст. :-)
Вы понимаете, в чем дело?
—СА
Member 11589429
Спасибо за ответ.
Sergey Alexandrovich Kryukov
См. также мое решение.
—СА