VS2017中分割数组元素后空串长度为1,如何查看不可见字符?
我来帮你搞定这个问题!你遇到的这种情况,大概率是那个看起来空的字符串里藏了不可见的空白字符(比如空格、制表符、换行符,甚至是Unicode零宽字符)。下面给你几个在Visual Studio 2017里查看实际值的实用方法,还有对应的处理思路:
一、在Visual Studio中查看不可见字符的具体方法
用即时窗口查字符编码
调试时打开即时窗口(快捷键Ctrl+Alt+I),输入这段命令:(int)splitSample[1][0]它会返回这个“不可见字符”的ASCII/Unicode编码值——比如空格是32,制表符是9,换行是10,零宽空格是8203。通过编码值就能精准定位是什么字符。
在监视窗口启用控制字符显示
在监视窗口里右键点击要查看的变量,选择**“显示字符串可视化工具”,在弹出的窗口中勾选“显示控制字符”**。这样那些不可见字符会被标记出来(比如空格显示为·,换行显示为¶)。转成字节数组分析
可以在即时窗口或者临时调试代码里执行这段:byte[] bytes = System.Text.Encoding.UTF8.GetBytes(splitSample[1]);查看
bytes数组的每个元素值,对应UTF-8编码表就能彻底搞清楚每个字节的真实内容。
二、处理这类问题的代码优化思路
既然知道可能存在不可见字符,判断前先做清理会更稳妥:
using System.Linq; string[] samples = ["Test_test","Test2_blah", "Test3_"]; var filteredSamples = samples.Where(s => { var parts = s.Split('_'); // 先去除前后所有空白类字符,再判断是否为空 var secondPart = parts.Length >= 2 ? parts[1].Trim() : string.Empty; return !string.IsNullOrEmpty(secondPart); }).ToArray();
如果Trim()还不够(比如遇到非空白类的不可见字符),可以用正则替换所有空白类字符:
using System.Text.RegularExpressions; // 替换所有空白类字符为空字符串 var cleanedPart = Regex.Replace(parts[1], @"\s+", string.Empty);
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

