我完全迷失在这里发生的事情。
string send = "!points add " + entries[winner] + " " + prize.ToString();
我想发送的是“!点添加赢家名称奖金”,但我得到的是“!points add winnername \ nprizeamount”。我放了\ n因为它写了一个新行,但是试图用“”替换“\ n”,“\ r”和“\ t”没有做任何事情。 enter image description here
所有我需要的是消息准确“!点空间添加空间winsname space prizeamount space”
如果重要的是我的代码中的条目是字符串列表
答案 0 :(得分:0)
entries
字符串已包含新行字符。
我建议您替换为Environment.NewLine
:
Replace Line Breaks in a String C#
答案 1 :(得分:0)
字符串对象'entries [winner]'具有换行符(LF)或回车符(CR)。你试试这个删除所有的LF和CR,
string send = "!points add "
+ entries[winner].Replace("\r", string.Empty).Replace("\n", string.Empty)
+ " " + prize.ToString();
或者,您可以使用Trim()删除前导\尾随LF \ CR。
string send = "!points add "
+ entries[winner].Trim()
+ " " + prize.ToString();
答案 2 :(得分:-2)
没有重复。以下代码未声明。
var entries=new List<string>{"Aaa", "Bbb", "Ccc"};
int prize=90;
int winner=1;
var send=String.Format("!points add {0} {1}",entries[winner],prize);
var send2="!points add " + entries[winner] + " " + prize.ToString();
Trace.Assert("!points add Aaa 90"==send);
Trace.Assert(send2==send);
如果结果包含换行符,那是因为entries
值包含换行符。
最佳解决方案是在将输入数据存储在列表中之前清理输入数据,例如使用https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/list/CursorableLinkedList.html或String.TrimEnd,例如,从文件加载数据时,你不能确定它不包含尾随空格。
要从您可以使用的文件中读取干净数据:
var entries=File.ReadLines()
.Select(line=>line.Trim())
.ToList();
如果您从用户输入逐个添加条目:
entries.Add(newEntry.Trim());
如果您无法更改数据的读取方式(为什么?),您可以在 时使用条目值进行修剪:
var send=String.Format("!points add {0} {1}",entries[winner].Trim(),prize);
加载干净的数据要容易得多