как заменить все пробелы в текстовом файле одним символом? - PullRequest
2 голосов
/ 30 августа 2011

У меня есть текстовый файл, как показано ниже:

string string
string                 string
string   string
string          string

Я хочу заменить все эти пробелы символом трубы (|).
Есть ли способ в C # для этого?

Я использую следующие коды для чтения и записи в файл:
Как читать и редактировать TXT-файл в C #?

EDIT:
после использования кодов в принятом ответе я получил ошибку ниже в строке
System.IO.File.WriteAllLines (... :

Не удалось найти файл 'C: \ Program Files \ Common Files \ Microsoft Общий \ DevServer \ 10.0 \ infilename.txt».

[Решает по абсолютному пути]

спасибо за комментарии и ответы:
не каждый пробел с одной трубой -> все пробелы в каждой строке с одной трубой ...

заранее спасибо

Ответы [ 5 ]

4 голосов
/ 30 августа 2011

Изменить ответ анунда в:

System.IO.File.WriteAllLines(
    "outfilename.txt",
    System.IO.File.ReadAllLines("infilename.txt").Select(line =>
        string.Join("|",
            line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)
        )
    ).ToArray()
);
3 голосов
/ 30 августа 2011

Примерно так должно работать:

System.IO.File.WriteAllLines(
    "outfilename.txt",
    System.IO.File.ReadAllLines("infilename.txt").Select(line =>
        System.Text.RegularExpression.Regex.Replace(line, @"\s+", "|")
        )
    ).ToArray()
);  

Примечание. Я просто скопировал ссылку и изменил ее на поиск пробелов и заменил ее на канал.

2 голосов
/ 30 августа 2011

Вы можете попробовать использовать регулярное выражение:

string text = "test    test   test         test";
string cleanText = System.Text.RegularExpressions.Regex.Replace(text, @"\s+", "|");
2 голосов
/ 30 августа 2011

Это может быть то, что вы ищете

var regex = new Regex("[ ]+", RegexOptions.Compiled);
regex.Replace(inputString, replaceCharacter);

после прочтения всего файла, используйте это регулярное выражение и запишите его обратно в свой файл.

0 голосов
/ 30 августа 2011

Используя Just Replace:

      string original  = "test   test  test test";
      string formatted = original.Replace("  ", " ").Replace(" ", "|");

замените все вхождения 2 смежных пробелов только на 1 пробел, затем замените окончательную пробелку на трубу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...