You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:49:11