#c# #asp.net #ends-with
#c# #asp.net #заканчивается-с
Вопрос:
Я не могу понять, почему EndsWith возвращает false .
У меня есть код C #:
string heading = "yakobusho";
bool test = (heading == "yakobusho");
bool back = heading.EndsWith("sho");
bool front = heading.StartsWith("yak");
bool other = "yakobusho".EndsWith("sho");
Debug.WriteLine("heading = " heading);
Debug.WriteLine("test = " test.ToString());
Debug.WriteLine("back = " back.ToString());
Debug.WriteLine("front = " front.ToString());
Debug.WriteLine("other = " other.ToString());
Результат таков:
heading = yakobusho
test = True
back = False
front = True
other = True
Что происходит с EndsWith?
Комментарии:
1. Копирование этого в dotnetfiddle подчеркивает тот факт, что в начале
"sho"
2. Разные символы, возможно, скрытый символ. Нет ничего плохого в
EndsWith()
3.
"sho"
Строка в третьей строке имеет длину 4 символа
Ответ №1:
Это содержит невидимый символ перед строкой «sho»:
bool back = heading.EndsWith("sho");
Исправленная строка:
bool back = heading.EndsWith("sho");
Ответ №2:
"sho"
Строка в третьей строке начинается с пробела нулевой длины. "sho".Length
возвращает 4, а ((int)"sho"[0])
возвращает 8203, значение Unicode для пробела нулевой длины.
Вы можете ввести это в строку, используя ее шестнадцатеричный код, например :
"x200Bsho"
Досадно, что этот символ не считается пробелом, поэтому его нельзя удалить с помощью String.Trim()
.
Ответ №3:
В вашем EndsWith
аргументе есть специальный символ.
Как вы можете видеть из этого кода:
class Program
{
static void Main(string[] args)
{
string heading = "yakobusho";
string yourText = "sho";
bool back = heading.EndsWith(yourText);
Debug.WriteLine("back = " back.ToString());
Debug.WriteLine("yourText length = " yourText.Length);
string newText = "sho";
bool backNew = heading.EndsWith(newText);
Debug.WriteLine("backNew = " backNew.ToString());
Debug.WriteLine("newText length = " newText.Length);
}
}
ВЫВОД:
back = False
yourText length = 4
backNew = True
newText length = 3
Длина yourText
равна 4, и поэтому в этой строке есть какой-то скрытый символ.
Надеюсь, это поможет.