我对 String.EndsWith 的使用有什么问题?
What's wrong with my usage of String.EndsWith?
我不明白为什么 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 是怎么回事?
这在 "sho" 字符串之前包含一个不可见字符:
bool back = heading.EndsWith("sho");
更正的行:
bool back = heading.EndsWith("sho");
第三行的 "sho"
字符串以 zero length space 开头。 "sho".Length
returns 4 while ((int)"sho"[0])
returns 8203,零长度的Unicode值space.
您可以使用十六进制代码将其输入字符串中,例如:
"\x200Bsho"
烦人的是,那个角色不被认为是白色的space所以它不能用String.Trim()
移除。
在你的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,所以这个字符串中有一些隐藏字符。
希望这对您有所帮助。
我不明白为什么 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 是怎么回事?
这在 "sho" 字符串之前包含一个不可见字符:
bool back = heading.EndsWith("sho");
更正的行:
bool back = heading.EndsWith("sho");
第三行的 "sho"
字符串以 zero length space 开头。 "sho".Length
returns 4 while ((int)"sho"[0])
returns 8203,零长度的Unicode值space.
您可以使用十六进制代码将其输入字符串中,例如:
"\x200Bsho"
烦人的是,那个角色不被认为是白色的space所以它不能用String.Trim()
移除。
在你的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,所以这个字符串中有一些隐藏字符。
希望这对您有所帮助。