随机包含换行符的字符串C#

时间:2018-04-27 10:23:58

标签: c# string

我完全迷失在这里发生的事情。

string send = "!points add " + entries[winner] + " " + prize.ToString();

我想发送的是“!点添加赢家名称奖金”,但我得到的是“!points add winnername \ nprizeamount”。我放了\ n因为它写了一个新行,但是试图用“”替换“\ n”,“\ r”和“\ t”没有做任何事情。 enter image description here

所有我需要的是消息准确“!点空间添加空间winsname space prizeamount space”

如果重要的是我的代码中的条目是字符串列表

3 个答案:

答案 0 :(得分:0)

entries字符串已包含新行字符。

我建议您替换为Environment.NewLineReplace 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.htmlString.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);

加载干净的数据要容易得多