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

C#中如何计算包含转义字符及特殊字符的字符串实际长度?

在C#中获取包含转义符的字符串总长度方法

在C#中,字符串的Length属性统计的是实际存储的字符数——比如\n(换行符)是单个字符,\'是单个单引号字符,不会把它们的转义写法(\\n、\\')中的反斜杠计入长度。如果要统计转义写法下的总字符数(即把每个特殊字符转换成对应的转义序列后计算长度),可以用以下方案:

通用处理方案

手动逐个替换特殊字符的方式只能覆盖已知场景,更通用的方式是遍历字符串,将所有需要转义的字符替换为对应的转义序列,再计算长度:

public static int GetEscapedStringLength(string input)
{
    if (string.IsNullOrEmpty(input))
        return 0;
    
    StringBuilder sb = new StringBuilder();
    foreach (char c in input)
    {
        switch (c)
        {
            case '\n': sb.Append("\\n"); break;
            case '\t': sb.Append("\\t"); break;
            case '\r': sb.Append("\\r"); break;
            case '\'': sb.Append("\\'"); break;
            case '\"': sb.Append("\\\""); break;
            case '\\': sb.Append("\\\\"); break;
            default: sb.Append(c); break;
        }
    }
    return sb.Length;
}

// 调用示例
string demo = "It's nice to meet you\nline2";
int escapedLength = GetEscapedStringLength(demo);
// 原Length是23,转义后长度是25(因为'转成\\',\n转成\\n,各多一个反斜杠)

如果需要处理Unicode转义(比如将非ASCII字符转为\uXXXX格式),可以扩展switch逻辑,判断字符的编码范围后生成对应的转义序列。

现有方案说明

你当前使用的"line 1\nline2".Replace("\n", "\\n").Length是可行的,但仅针对单个转义字符,当字符串包含多种特殊字符时,需要依次添加多个Replace调用,通用性较差。

内容的提问来源于stack exchange,提问作者Paul Hebert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:06:26