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

C#字符串拼接出现换行符,替换失效求助:需生成指定格式消息

解决字符串拼接时出现意外换行的问题

看起来你的问题核心是entries[winner]这个字符串里暗藏了换行(或者回车、制表符这类不可见空白字符),而且直接替换\n/\r可能没覆盖到所有情况。我给你几个靠谱的解决思路:

1. 先定位问题根源(可选但推荐)

先确认entries[winner]里到底有哪些特殊字符,比如用这段代码输出每个字符的ASCII码:

var charCodes = string.Join(", ", entries[winner].Select(c => (int)c));
Console.WriteLine(charCodes);

如果看到有10(对应\n)或13(对应\r),那就是明明白白的换行/回车字符在搞鬼。

2. 彻底清理空白字符的方案

方案一:用正则表达式一键搞定

正则的\s+可以匹配所有空白字符(换行、回车、制表符、多个连续空格都算),直接替换成单个空格,再去掉首尾多余空格:

using System.Text.RegularExpressions;

// 清理winner名称里的所有多余空白
string cleanWinner = Regex.Replace(entries[winner], @"\s+", " ").Trim();
// 拼接目标字符串
string send = $"!points add {cleanWinner} {prize}";

方案二:手动替换所有可能的特殊字符

如果不想引入正则,也可以逐个替换常见的空白字符,再清理首尾:

string cleanWinner = entries[winner]
    .Replace("\r", "")  // 替换回车
    .Replace("\n", "")  // 替换换行
    .Replace("\t", "")  // 替换制表符
    .Trim();             // 去掉首尾空格
string send = $"!points add {cleanWinner} {prize.ToString()}";

3. 从源头避免问题

如果entries是从文件、网络请求或者用户输入获取的,建议在存入entries的时候就做一次清理,比如:

// 当你往entries里添加名称时
string rawName = "获取到的原始名称(可能带换行)";
string cleanedName = Regex.Replace(rawName, @"\s+", " ").Trim();
entries.Add(cleanedName);

这样后续拼接就不会再出现类似问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:01:53