我将这些数据放入测试文本文件中:
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
但我想在太空中使用一个分号。我可以解决这个问题吗?
答案 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;
。