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

C#中如何在\x转义序列中嵌入字符串,转义结果异常是什么原因

问题原因

\x转义序列是编译期处理的语法规则,不会和运行时的插值字符串内容合并解析。

你代码里的$"\x0{str2}{str3}"会被编译器按两个阶段拆分处理:

  • 第一阶段:先解析字符串字面量内的转义序列,编译器只会识别字面量里写死在\x后面的字符,此处\x后紧跟着的字面量字符只有0,符合\x转义最少1位、最多4位十六进制字符的规则,因此编译器直接把\x0解析为ASCII码为0的空字符(NUL)。
  • 第二阶段:处理插值逻辑,把str2、str3的运行时值拼接到第一步得到的空字符后面,最终得到的字符串是「空字符 + str2内容 + str3内容」,自然不会得到你预期的Unicode字符U+0D37(ഷ)。
正确实现方案

如果要在运行时动态拼接十六进制值并转换为对应字符,不要依赖编译期的\x转义,主动完成十六进制到字符的转换即可:

// 拼接得到完整的4位十六进制字符串
string hexCode = $"0{str2}{str3}";
// 将十六进制值转为整数后强转为对应字符
char targetChar = (char)Convert.ToInt32(hexCode, 16);
// 生成最终字符串
string str = targetChar.ToString();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:04