因此我有一个completed
由 WebService 初始化。我想看看该标签是否包含任何逗号。问题是,即使标签具有逗号,course_module.completed!
也会返回Label
,而如果我执行Contains()
,则数组仅为 1 元素长,包含整个字符串。
false
Split()
和// text is "255,255,0,0"
string wat = myLabel.Text;
string[] wats = wat.Split(',');
// This IF never happens, for some reason
if (wat.Contains(","))
{
anotherLabel.Text = wats[0] + " VS " + wats[1];
}
为什么不起作用?标签中的字符串中是否可以是某种差异编码?如果我执行Split()
,则Contains()
返回wat = wat + ","
。
答案 0 :(得分:3)
Unicode符号通常很奇怪。 Unicode有很多逗号,例如
string wat = "255,255,0,0"; // Full range commas
bool hasComma = wat.Contains(','); // false
如果wat.Contains(',')
返回false
,则分隔符不是逗号,
。您可以使用已解码的string
进行检查:
string wat = myLabel.Text;
// Let's have a close look at wat: which characters (codes included) does it contain
MessageBox.Show(
$"wat: [{wat}] encoded as {string.Join(" ", wat.Select(c => ((int)c).ToString("x4")))}");
您应该获得
wat:[255,255,0,0]编码为0032 0035 0035 002c 0032 0035 0035 002c 0030 002c 0030
如果不是,请检查您有什么字符代码,而不是预期的002c
。
答案 1 :(得分:-1)
以下几行总是会得出false:
if (wats.Contains(","))
当您指定逗号作为分隔符时,string.Split(',')将仅返回逗号之间的值。数组中的所有项目都不会包含逗号。
如果要检查标签文本是否包含逗号,请执行以下操作:
if (lblteste.Text.Contains(','))