如何在大字符串的每一行添加后缀

时间:2019-03-20 10:28:31

标签: c# string

我编写了一个代码,在多行字符串的每一行末尾添加后缀,但是代码仅追加在字符串末尾。我是初学者。有人可以帮我弄清楚我弄错了什么吗?这是我的代码:

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

3 个答案:

答案 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