c# - 将字符串附加到 StringBuilder 对象时如何保留转义字符?
问题描述
我正在尝试将用户输入字符串添加到 StringBuilder,然后我可以在其他地方使用来显示我正在构建的字符串。问题是当用户执行回车并且我尝试将其附加到 StringBuilder 时,它会删除转义字符并因此返回。
例如,假设用户输入以下内容:
你好, 我的名字是汤姆。
当我从文本框控件中提取该字符串并将其传递给保存 StringBuilder 的方法时,它看起来像这样:
Hello,\r\nMy name is Tom.
但是一旦我将它附加到 StringBuilder ,它就会删除所有转义字符并变成这样:
Hello,My name is Tom.
这导致输出为:
Hello,My name is Tom
代替:
你好, 我的名字是汤姆
这是从 ctrl 拉取用户输入的方法
protected List<BetweenTagData> BetweenTagDataPull(string ctrlName)
{
List<BetweenTagData> data = new List<BetweenTagData>();
BetweenTagData pullIt = new BetweenTagData();
if (ctrlName == "Label")
{
pullIt.text = TagLabelTxtbxEnterText.Text.ToString();
data.Add(pullIt);
}
return data;
}
这是使用 StringBuilder 构建字符串的方法
static public string TagBetween(List<BetweenTagData> betweenData)
{
StringBuilder betweenString = new StringBuilder();
foreach (BetweenTagData row in betweenData.ToList())
{
if (row.text != "")
{
betweenString.Append(row.text);
}
}
return betweenString.ToString();
}
解决方案
我不确定你的问题到底是什么,但我可以肯定地告诉你StringBuilder
类型不关心或改变这些字符。真正的问题更有可能在BetweenTagData
课堂上。我还可以帮助您改进现有方法:
protected List<BetweenTagData> BetweenTagDataPull(string ctrlName)
{
List<BetweenTagData> data = new List<BetweenTagData>();
if (ctrlName == "Label")
{
data.Add(new BetweenTagData() {text = TagLabelTxtbxEnterText.Text});
}
return data;
}
static public string TagBetween(IEnumerable<BetweenTagData> betweenData)
{
return string.Join("", betweenData.Where(bd => !string.IsNullOrEmpty(bd.text)).Select(bd => bd.text));
}
推荐阅读
- java - 通过使用spring框架如何设计一个向用户显示视频的网页
- asp.net - 生成的表单 asp-action 标签助手包括 id
- reactjs - 样式化组件和 react-bootstrap
- solr - 无法创建新核心,原因是:_version_ 字段必须存在于架构中且可搜索
- django - 如何在 Django URL 路径中使用 next_page
- visual-studio - 将整个项目添加到源代码管理
- java - 如何防止开发者使用有风险的方法
- javascript - 如何在 Swing-GUI 和 WebApplication(如 Vaadin 或本机 JS)之间同步倒计时
- python - 在不拆分数据的情况下创建 RandomForest 训练。我在一个文件中有训练数据,在另一个文件中有测试数据
- mysql - 映射多对多关系表,如果映射表中不存在数据则显示0