Console.WriteLine(string.IsNullOrWhiteSpace("ㅤ"));
C#
C# Почему возвращает false?
C++
int main()
{
wstring str = L"ㅤ";
for (int i = 0; i < str.size(); i++) cout
Андрей Царёв
Как с этим бороться?
Тут написано, какие именно символы считаются пробельными:
https://learn.microsoft.com/en-us/dotnet/api/system.char.iswhitespace?view=net-7.0
https://learn.microsoft.com/en-us/dotnet/api/system.char.iswhitespace?view=net-7.0
Тоже мне загадка
примерно в стиле почему
Console.WriteLine("й"=="й");
выдает false
https://onlinegdb.com/iPpbi8Kra
Если в строку прописать "невидимые" UNICODE символы так и должно работать
примерно в стиле почему
Console.WriteLine("й"=="й");
выдает false
https://onlinegdb.com/iPpbi8Kra
Если в строку прописать "невидимые" UNICODE символы так и должно работать
Андрей Царёв
Это легко
Console.WriteLine("й".Normalize() == "й".Normalize());
символ юникода можно получить несколькими способами. в 1 случае буква й. Во втором буква "и" и символ модификатор. Нужно нормализовать строки юникода и проблем не будет откуда мне знать что в string
Андрей Царёв
"ㅤ"
этот символ Код "ㅤ" представляет собой невидимый символ Unicode - U+3164, который называется "Hangul Filler".
Метод `string.IsNullOrWhiteSpace()` возвращает значение true, если переданная строка является `null`, пустой или содержит только пробельные символы, такие как пробел, новая строка, табуляция и т.д.
Хотя символ "Hangul Filler" не виден, он не является пробельным символом, поэтому метод `string.IsNullOrWhiteSpace("ㅤ")` вернет значение false.
Метод `string.IsNullOrWhiteSpace()` возвращает значение true, если переданная строка является `null`, пустой или содержит только пробельные символы, такие как пробел, новая строка, табуляция и т.д.
Хотя символ "Hangul Filler" не виден, он не является пробельным символом, поэтому метод `string.IsNullOrWhiteSpace("ㅤ")` вернет значение false.
Андрей Царёв
как можно работать с такими символами? Как считать их за пробел?
Дело в ошибке компилятора, либо Вы предоставляете нам неверную информацию.
Андрей Царёв
Скопируй эту строчку и сам посмотри вывод
Ну во-первых для этого надо знать основные принципы ооп:
Абстракция. Моделирование требуемых атрибутов и взаимодействий сущностей в виде классов для определения абстрактного представления системы.
Инкапсуляция. Скрытие внутреннего состояния и функций объекта и предоставление доступа только через открытый набор функций.
Наследование. Возможность создания новых абстракций на основе существующих.
Полиморфизм. Возможность реализации наследуемых свойств или методов отличающимися способами в рамках множества абстракций.
Далее надо разобраться с делегатами и интерфейсами:
Делегат — это тип, который представляет ссылки на методы с определенным списком параметров и типом возвращаемого значения. При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и типом возвращаемого значения. Метод можно вызвать (активировать) с помощью экземпляра делегата.
Интерфейс определяет контракт. Любой class или struct, реализующий этот контракт, должен предоставлять реализацию для членов, определенных в интерфейсе. Интерфейс может определять реализацию по умолчанию для членов.
Ну а дальше уже сам разберёшься
Абстракция. Моделирование требуемых атрибутов и взаимодействий сущностей в виде классов для определения абстрактного представления системы.
Инкапсуляция. Скрытие внутреннего состояния и функций объекта и предоставление доступа только через открытый набор функций.
Наследование. Возможность создания новых абстракций на основе существующих.
Полиморфизм. Возможность реализации наследуемых свойств или методов отличающимися способами в рамках множества абстракций.
Далее надо разобраться с делегатами и интерфейсами:
Делегат — это тип, который представляет ссылки на методы с определенным списком параметров и типом возвращаемого значения. При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и типом возвращаемого значения. Метод можно вызвать (активировать) с помощью экземпляра делегата.
Интерфейс определяет контракт. Любой class или struct, реализующий этот контракт, должен предоставлять реализацию для членов, определенных в интерфейсе. Интерфейс может определять реализацию по умолчанию для членов.
Ну а дальше уже сам разберёшься
Похожие вопросы
- C#.Почему double не конвертируется во float?
- C#. Как вернуть индекс определенного элемента массива?Почему ошибка?
- Почему в C# логические операторы имеют именно такой вид (||, |, &&, &, !)
- Стоит ли дальше учить C#?
- Почему C# относится к компилируемым языкам, компиляция это перевод всего кода в машинный, а C# переводится в байт код
- Программирование на C Sharp (C#)
- Сегодня начал учить c#, решил сделать калькулятор простой и столкнулся с такой ошибкой при компиляции, хелпуйте.
- Что лучше C# или C++?
- Зачем разбивать код в C# на отдельные классы?
- Помогите пожалуйста. Написать на C#