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

C# 如何从文本文件中删除空格并将其替换为分号?,c#,C#,我将此数据保存到测试文本文件中: behzad razzaqi xezerlooot abrizii ast 我想删除空格并将空格替换为一个分号字符,请用c#编写以下代码: string[] allLines = File.ReadAllLines(@"d:\test.txt"); using (StreamWriter sw = new StreamWriter(@"d:\test.txt")) {

我将此数据保存到测试文本文件中:

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");


但是我想在空格中加一个分号。我怎样才能解决这个问题呢?

使用以下代码:

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);
     }
}

您需要使用正则表达式:

(\s\s+)
用法

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

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");

您可以使用正则表达式来实现这一点

  using System.Text.RegularExpressions;
以及:

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

您可以尝试此方法

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

 string result=r.Replace("YourString",";");
\s+
用于匹配所有空格<代码>+用于一次或多次出现


有关
正则表达式的详细信息,请参见您应该在替换后检查字符串长度,而不是在;-)之前


…不要忘记,对于输入
hello
,您将得到
;你好,

内部循环实际上不会做任何事情,因为所有“word”都已被修剪,因此此代码的输出与
Replace(“,”;”)
相同,您需要使用重载,该重载接受
StringSplitOptions
并传入
StringSplitOptions.removeMptyEntries
  string pattern = "\\s+";
  string replacement = ";";
  Regex rgx = new Regex(pattern);
  sw.WriteLine(rgx.Replace(line, replacement));
 Regex r=new Regex(@"\s+");

 string result=r.Replace("YourString",";");
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));