我编写了一个代码,在多行字符串的每一行末尾添加后缀,但是代码仅追加在字符串末尾。我是初学者。有人可以帮我弄清楚我弄错了什么吗?这是我的代码:
protected void Prefix_Suffix_Btn_Click(object sender, EventArgs e)
{
String txt_input = Input_id.InnerText.ToString().Trim();
String txt_suffix = Suffix_id.InnerText.ToString().Trim();
String txt_output = Output_id.InnerText.ToString().Trim();
txt_input = txt_input.Replace(txt_suffix + "\n", "\n");
txt_input = txt_input + txt_suffix;
Output_id.InnerText = txt_input;
}
输入:
Line1
Line2
Line3
所需的输出:
Line1AppededText
Line2AppendedText
Line3AppendedText
答案 0 :(得分:1)
让Split
文本行中,将每个line
附加到Join
后面,最后附加string
:
string source = string.Join(Environment.NewLine,
"Line1",
"Line2",
"Line3");
// Let's have a look at the initial string;
Console.WriteLine(source);
Console.WriteLine();
string result = string.Join(Environment.NewLine, source
.Split(new string[] { Environment.NewLine }, StringSplitOptions.None)
.Select(line => line + "AppendedText"));
Console.Write(result);
结果:
Line1
Line2
Line3
Line1AppendedText
Line2AppendedText
Line3AppendedText
答案 1 :(得分:0)
从您的Input_id.InnerText
中出来的字符串是由许多行组成的字符串。因此,如果要追加到每一行,则需要考虑一种单独处理这些行的方法。
行尾表示为字符'\ n'。在您看来,它看起来像2个字符,但是引擎会将其视为一个字符:行尾。
您可以做的是,只要发现'\ n',就可以通过将字符串捕捉(拆分)为多个字符串。您可以通过以下方式做到这一点:
var lines = Input_id.InnerText.ToString().Split('\n');
现在lines
包含一个字符串数组,其中的每个项目都包含一行输入。
现在,您可以创建一个新的字符串,该字符串将由拆分数组建立,如下所示:
var newString = "";
foreach(var line in lines) {
newString += line + "<appendText>\n"; //note how we add the \n again since those disappeared by splitting
}
现在newString
将包含新的字符串,每行都包含附加的文本。
一个简短的答案是例如使用如下所示的replace函数:
var newString = Input_id.InnerText.ToString().Replace("\n", "<AppendedText>\n");
有很多方法可以做你想做的事。
答案 2 :(得分:0)
将值传递到Replace()
方法时,您只是犯了一个错误。 String.Replace()
的{{3}}定义如下:
公共字符串替换(字符串oldValue,字符串newValue);
第一个参数(“ oldValue”)应该是您要替换的东西。第二个参数(“ newValue”)应该是您想要将其更改为的东西。您只是错误地绕过它们。您是在要求它用旧文本(只是换行符)替换新文本(后缀和换行符),显然这是行不通的,因为后缀文本在字符串中尚不存在-而且不会即使是可行的,也要合乎逻辑。
更改
txt_input = txt_input.Replace(txt_suffix + "\n", "\n");
到
txt_input = txt_input.Replace("\n", txt_suffix + "\n");
,你应该没事。正如其他答案所暗示的那样,可能会有更好的方法来实现相同的输出,但是就固定原始代码而言,这是您应该要做的。
这是一个实时演示(仅使用控制台输出而不是HTML元素):documentation