C# 在C中特殊字符第n次出现时添加新行字符#

C# 在C中特殊字符第n次出现时添加新行字符#,c#,c#-4.0,console-application,C#,C# 4.0,Console Application,假设我有一个字符串,其中包含许多管道分隔的数据 String s="hskdhkdh|eeeee|eeeee|eeeee|eeeesds|ddd\nsdsfdfdf|dsfdfdf|dfdsf\ndsfdsf|sdfsfdsfds|cvcxvv|hkdh\nhdskdh|hdkshdkd|n\nkho|jljoas|sbkhash|bkshoshak\nhksashalsha|bkgaskgask|hkhlv|skhgdskdg|bgdsjdgsj|gklgau" 如果使用此字符串,则新行字符

假设我有一个字符串,其中包含许多管道分隔的数据

String s="hskdhkdh|eeeee|eeeee|eeeee|eeeesds|ddd\nsdsfdfdf|dsfdfdf|dfdsf\ndsfdsf|sdfsfdsfds|cvcxvv|hkdh\nhdskdh|hdkshdkd|n\nkho|jljoas|sbkhash|bkshoshak\nhksashalsha|bkgaskgask|hkhlv|skhgdskdg|bgdsjdgsj|gklgau"
如果使用此字符串,则新行字符(\n)太多,但我只希望\n出现在每第6次管道(|)之前

所以结果应该是

  String s="hskdhkdh|eeeee|eeeee|eeeee|eeeesds|ddd\nsdsfdfdf|dsfdfdf|dfdsfdsfdsf|sdfsfdsfds|cvcxvv|hkdh\nhdskdh|hdkshdkd|nkho|jljoas|sbkhash|bkshoshak\nhksashalsha|bkgaskgask|hkhlv|skhgdskdg|bgdsjdgsj|gklgau"
我正在控制台应用程序中处理C# 有人能帮我一下吗分成小块
var bits = s.Split('|'); // Divide into bits
for(int i = 0; i < bits.Length; i++){
  if(i % 6 == 0){
    bits[i] += "\n";
  }
}
var done = string.Join(bits, '|');
for(int i=0;i
这应该是可行的(如果它编译了,我会在回复中直接编码)

您最好使用
string.split()
方法将其更改为
子字符串的
数组,然后使用
Stringbuilder
计数器
变量来拆分字符串

我将使用您的字符串在下面为此编写代码

 string s = "hskdhkdh | eeeee | eeeee | eeeee | eeeesds | ddd | sdsfdfdf | dsfdfd | dfdsfdsfdsf | sdfsfdsfds | cvcxvv | hkdh | hdskdh | hdkshdkd | nkho | jljoas | sbkhash | bkshoshak | hksashalsha | bkgaskgask | hkhlv | skhgdskdg | bgdsjdgsj";

        string[] substrings = s.Split('|');

        int counter = 1;

        StringBuilder sb = new StringBuilder();

        foreach (string sub in substrings)
        {
            sb.Append(sub + "|");

            if (counter % 6 == 0)
            {
                sb.Append("\n");
            }

            counter++;
        }

        s = sb.ToString();
您可以尝试使用Linq:


这将在第七位之后添加第一个,不是吗?如果((i+1)%6==0),则应为
。如果需要计数器,则不应使用
foreach
。只需使用
for
并使用该计数器即可。感谢您的反馈!我认为FACHACE更容易回答问题。我已经修改了这个问题。我需要在每第六次出现字符之前,我还需要删除其他的N个字符,这些字符也在文本中间。请帮助这是基本的东西,虽然…你根本没有接受过c#方面的培训吗?从字符串中剥离特定字符只是s.Replace()
  String s =
     "hskdhkdh|eeeee|eeeee|eeeee|eeeesds|ddd\nsdsfdfdf|dsfdfdf|dfdsf\ndsfdsf|sdfsfdsfds|cvcxvv|hkdh\nhdskdh|hdkshdkd|n\nkho|jljoas|sbkhash|bkshoshak\nhksashalsha|bkgaskgask|hkhlv|skhgdskdg|bgdsjdgsj|gklgau";

  // Split by | 
  // Remove extra \n 
  // Join back by |
  String result = String.Join("|", s
    .Split('|')
    .Select((item, index) => ((index > 0) && (index % 5 == 0)) 
               ? item 
               : item.Replace("\n", "")));

  // Test:
  // hskdhkdh|eeeee|eeeee|eeeee|eeeesds|ddd
  // sdsfdfdf|dsfdfdf|dfdsfdsfdsf|sdfsfdsfds|cvcxvv|hkdh
  // hdskdh|hdkshdkd|nkho|jljoas|sbkhash|bkshoshak
  // hksashalsha|bkgaskgask|hkhlv|skhgdskdg|bgdsjdgsj|gklgau
  Console.Write(result);