如何从文本文件中删除空格并将其替换为分号?

时间:2015-08-30 06:50:32

标签: c#

我将这些数据放入测试文本文件中:

behzad  razzaqi  xezerlooot   abrizii         ast


我想删除空格并用空格分隔一个分号,在c#中写下这段代码:

string[] allLines = File.ReadAllLines(@"d:\test.txt");
            using (StreamWriter sw = new StreamWriter(@"d:\test.txt"))
            {
                foreach (string line in allLines)
                {
                    if (!string.IsNullOrEmpty(line) && line.Length > 1)
                    {
                        sw.WriteLine(line.Replace(" ", ";"));
                    }
                }
            }
            MessageBox.Show("ok");


behzad;;razzaqi;;xezerlooot;;;abrizii;;;;;ast


但我想在太空中使用一个分号。我可以解决这个问题吗?

6 个答案:

答案 0 :(得分:6)

正则表达式是一个选项:

string[] allLines = File.ReadAllLines(@"d:\test.txt");
using (StreamWriter sw = new StreamWriter(@"d:\test.txt"))
{
    foreach (string line in allLines)
    {
        if (!string.IsNullOrEmpty(line) && line.Length > 1)
        {
            sw.WriteLine(Regex.Replace(line,@"\s+",";"));
        }
    }
}
MessageBox.Show("ok");

答案 1 :(得分:3)

使用此代码:

string[] allLines = File.ReadAllLines(@"d:\test.txt");
using (StreamWriter sw = new StreamWriter(@"d:\test.txt"))
{
     foreach (string line in allLines)
     {
          string[] words = line.Split(" ", StringSplitOptions.RemoveEmptyEntries);
          string joined = String.Join(";", words);
          sw.WriteLine(joined);
     }
}

答案 2 :(得分:1)

您需要使用正则表达式:

(\s\s+)

<强>用法

var input = "behzad  razzaqi  xezerlooot   abrizii         ast";
var pattern = "(\s\s+)";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, ';');

答案 3 :(得分:1)

您可以使用正则表达式

  using System.Text.RegularExpressions;

  string pattern = "\\s+";
  string replacement = ";";
  Regex rgx = new Regex(pattern);
  sw.WriteLine(rgx.Replace(line, replacement));

此正则表达式匹配任意一个或多个空格的系列,并用分号替换整个系列。

答案 4 :(得分:1)

你可以试试这个

 Regex r=new Regex(@"\s+");

 string result=r.Replace("YourString",";");

\s+用于匹配所有空格。 +适用于一次或多次。

有关regular expression的更多信息,请参阅http://www.w3schools.com/jsref/jsref_obj_regexp.asp

答案 5 :(得分:0)

您应该在更换后检查字符串长度,而不是之前; - )。

const string file = @"d:\test.txt";

var result = File.ReadAllLines(file).Select(line => Regex.Replace(line, @"\s+", ";"));

File.WriteAllLines(file, result.Where(line => line.Length > 1));

...不要忘记,对于输入 hello ,您将获得;hello;