包含特定Word的行后的换行符

时间:2014-10-15 14:10:33

标签: c#

我的样本格式如下所述

----------------------------------------------- SAMPLE INPUT ----------------------------------------

  

免费的LANCE
  地址:街景1   联系人:John Mattew
   TEST COMPANY 2
  地址2
  联系人:Jaskson Samuel

     

硕士测试公司
  地址:街景2   联系人:Jackson Sam
   MASTERMIND WORKING
  联系人:Simon Teo

     

FIVESTAR COMPANY
  地址:街景3
  联系人:Edmund Long先生

----------------------------------------------- SAMPLE INPUT END --------------------------------------

我想要以下输出

----------------- SAMPLE OUTPUT ---------------------------- -

  

THE FREE LANCE |地址:街景1 |联系人:John Mattew $ TEST COMPANY 2 |地址2 |联系人:Jaskson Samuel $ MASTER TEST COMPANY |地址:街景2 |联系人:Jackson Sam $ MASTERMIND WORKING |联系人:Simon Teo $ FIVESTAR COMPANY |地址:街景3 |联系人:Edmund Long先生

----------------- SAMPLE OUTPUT END --------------------------- ---

我尝试使用替换功能并用/替换/ r / n但对于如何在每个公司之前添加$感到困惑。我观察到的唯一一件事是每条线索的最后一行与联系人以及姓名一起结束。请帮我识别身份代码以执行以下操作

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到:) 这是一种可能的方式。

建议

例如,如果每家公司总共有2行:地址联系人

然后你可以遍历每一行并继续计算解析的行数,然后使用它来查找公司名称,其余的将自行解决。

示例:

public class CompanyInfo {
    public string Name {get;set;} 
    public string Address {get;set;}
    public string ContactPerson {get;set;}
    public override string ToString() {
        return "$ " + Name + "|" + Address + "|" + ContactPerson;
    }
}

public string ParseInput(string input, int rowsPerCompany=3) {
   var companies = new List<CompanyInfo>();
   var rows = input.Split('\n');
   var tmpIndex=0; 
   var lined = new List<string>();
   CompanyInfo lastCompany = null;
   for(var j = 0; j < rows.Length; j++) {
      // Skip any rows that starts with ----
      if(rows[j].Trim().StartsWith("----")) { 
         lined.Add(rows[j]); continue; 
      }

      if(tmpIndex==0) {
         lastCompany = new CompanyInfo();
         lastCompany.Name = rows[j];
      }
      if(tmpIndex==rowsPerCompany) {
         tmpIndex=0;
         companies.Add(lastCompany);
      }
      else{
         if(tmpIndex==0) { lastCompany.Name = rows[j]; }
         if(tmpIndex==1) { lastCompany.Address= rows[j]; }
         if(tmpIndex==2) { lastCompany.ContactPerson = rows[j]; }
         tmpIndex++;
      }
   }
   var sb = new StringBuilder();
   sb.AppendLine(lined.FirstOrDefault());

   sb.AppendLine(string.Join("", companies.Select(c=>c.ToString()).ToArray() ));
   sb.AppendLine(lined.LastOrDefault());
   return sb.ToString();
}

请注意,代码未经过测试。

希望这是任何帮助/回答你的问题。

干杯, Zerratar