【问题标题】:Add a character on each line of a string在字符串的每一行添加一个字符
【发布时间】:2016-03-16 19:03:34
【问题描述】:

我做了一个 CSV 转换器,为此,我需要用“;”替换所有空格。我已经做了这一步。问题是我有一个带有多行模式的texbox。这是我的实际代码:

string[] Espace1 = new string[] { " " };
foreach (string contenu in content1.Split(Espace1, StringSplitOptions.RemoveEmptyEntries))
{
    content1 = content1.Replace(" ", ";");
    File.WriteAllText(path1, content1);
}

这是输出:(示例)

15;16;13;21
15;49;47
46;78;15

为了让文件像 csv 一样很好地解释,我需要添加一个“;”在每一行的末尾。喜欢:

15;16;13;21;
15;49;47;
46;78;15;

有什么帮助吗? :)

编辑

这是我的完整代码:

        string nom = tbxNom.Text;
        #region Normal
        try
        {
            string content1 = tbxArret.Text;
            string path1 = @"C:\Users\DanyWin\Desktop\CsvOutput\" + nom + ".csv";
            string[] Espace1 = new string[] { " " };
            foreach (string contenu in content1.Split(Espace1, StringSplitOptions.RemoveEmptyEntries))
            {
                content1 = content1.Replace(" ", ";");
                File.WriteAllText(path1, content1);
            }

        }
        catch
        {
            lblInfo.Text = "Erreur";
        }

【问题讨论】:

  • 抱歉,不小心删除了我的评论。问题是,content1 是否包含所有行
  • 是的,它包含了这里的所有行,我只是将所有的空间分割成“;”替换它们

标签: c# character line add


【解决方案1】:

content1 似乎包含整个文件。

因此,如果您想在每一行中添加分号,可以将换行符替换为分号和换行符。

content1 = content1.Replace("\n", ";\n");

你可以让你的代码更简单一点:

string nom = tbxNom.Text;
#region Normal
try
{
    string content1 = tbxArret.Text;
    string path1 = @"C:\Users\DanyWin\Desktop\CsvOutput\" + nom + ".csv";
    var lines = content1.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                .Select(line => Regex.Replace(line, @"\s+", ";") + ";");
    content1 = String.Join("\n", lines);
    File.WriteAllText(path1, content1);
}
catch
{
    lblInfo.Text = "Erreur";
}

【讨论】:

  • 这是不正确的。首先,空格被替换为;。只有那些在行尾需要额外的半色和新行
  • @MPavlak 这就是换行符前面带有分号的原因。我不确定我明白你的意思。你能详细说明一下吗?
  • 第一个替换是将空格变成分号。这里没有做
  • @MPavlak 是的,我把它省略了,因为他已经想出了如何做到这一点
  • @Domysee 如果我使用你的代码,这是我的输出:15;69;78; 15;16;48 这不会影响所有条目。这就是我使用 foreach 循环的原因
【解决方案2】:
content1 = string.Concat( content1.Replace(" ", ";"), ";");

删除所有空格,然后连接“;”最后

【讨论】:

  • 它把所有的“;”最后:15;19;17 15;17;18;156;;;;;;
【解决方案3】:
char []split = new char[]{' '};

//replaces all " " with ";", contiguous "    " will be replaced with a single ";"
var c2 = String.Join(";", content1.Split(split, StringSplitOptions.RemoveEmptyEntries)); 

//replaces all newlines with a semicolon followed by a newline, thus appends a semicolon to the end of line. 
var c3 = c2.Replace(System.Environment.NewLine, ";"+System.Environment.NewLine);

//If the file did not end with an NewLine, append a semicolon to the last line
if (!c3.EndsWith(System.Environment.NewLine)) c3+=";";

File.WriteAllText(path, c3);

这不是最快的解决方案,但它确实有效。

【讨论】:

  • 没有。第一行处理所有空格。
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2010-10-10
相关资源
最近更新 更多