2010-03-23 3 views
4

У меня есть приложение Windows C#, которое читает кучу таблиц SQL и создает кучу запросов на основе результатов. Что у меня небольшая проблема с является окончательным «» на мой запросC# Чтение файла и запись замены строки

Это то, что у меня есть

ColumnX, 

from 

мне нужно прочитать весь файл, записать именно то, что находится в файле и просто замените последнее, до того ни с чем.

Я пробовал .replace(@",\n\nfrom),(@"\n\nfrom), но это не находит. Любая помощь приветствуется.

Пример:

ColumnX, 

from 

Результат:

ColumnX 

from 
+3

Это String.Replace? Если это так, вы можете попробовать его без символов @. –

ответ

7

Разрыв линии, скорее всего, две комбинации символов CR + LF:

.replace(",\r\n\r\nfrom","\r\n\r\nfrom") 

Если вы хотите, чтобы разрыв строки для в текущей системе вы можете использовать значение Environment.NewLine:

.replace(","+Environment.NewLine+Environment.NewLine+"from",Environment.NewLine+Environment.NewLine+"from") 

Обратите внимание, что @ в начале строки означает, что он не использует обратную косую черту экранирующие последовательности, но с другой стороны, она может содержать разрывы строк, так что вы можете записать его в этом несколько запутанным образом:

str = str.replace(@", 

from", @" 

from"); 
+1

+1 для упоминания Environment.NewLine –

2

Есть два решения, которые вы можете попробовать:

  1. Удалите @ символ, так как это означает, что он будет искать буквальные символы \n, а не перевод строки.
  2. Попробуйте .replace("," + Environment.NewLine + Environment.NewLine + from, Environment.NewLine + Environment.NewLine + "from)
+0

+1, это был прежде всего стенографический литерал (@), который его закручивал, кроме как там могло быть пространство или CR – curtisk

1

Вместо замены или удаления запятая, когда вы читаете файл, вероятно, было бы предпочтительнее, чтобы удалить его до того, как файл записывается. Таким образом, вам нужно только один раз побеспокоиться с логикой. Когда вы создаете свой список столбцов, просто удалите последнюю запятую после создания списка. Надеюсь, вы находитесь в положении, когда у вас есть контроль над этим процессом.

1

Если вы можете предположить, что вы всегда хотите удалить последнее вхождение запятой, вы можете использовать строковую функцию LastIndexOf, чтобы найти индекс для последней запятой и использовать Remove оттуда.

myString = myString.Remove(myString.LastIndexOf(","), 1); 
0

Как насчет использования Regex? Помогает ли это другим формам перевода строк лучше?

var result = Regex.Replace (input, @ ", (\ n *) from", "$ 1from");

Смежные вопросы