c# - 来自 label.text 奇怪行为的字符串
问题描述
所以我有一个Label
被WebService初始化的东西。我想看看该标签是否包含任何逗号。问题是,即使标签有逗号,Contains()
返回false
,如果我做 a Split()
,数组只有1 个元素长,包含整个 string。
// 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 + ","
,则Contains()
返回True
。
解决方案
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
。
推荐阅读
- encryption - SAP ABAP 中的 RSA/ECB/PKCS1 填充加密
- python - html unescape 并不总是按预期工作
- javascript - 在 WebSphere 服务器上完成的 JS 文件更改未通过 dmgr URL 反映
- spring - JSF无法使用spring boot解析xhtml文件中的bean
- spring-webflux - 发生错误时如何恢复 Flux 元素
- python - 在 sqlite 执行语句中使用字符串格式会引发错误
- c++ - c ++中的随机字符串生成器在循环中返回相同的值
- python - ANOVA:“float”和“str”实例之间不支持“<”
- macros - 执行计算的 DBT 宏
- android - Xamarin - System.FormatException:“输入字符串的格式不正确。”