Разобрать <br>в текстовый новый абзац - PullRequest
7 голосов
/ 25 июня 2009

В настоящее время я занимаюсь удалением тегов html из полей внутренней базы данных. Все прошло гладко, за исключением превращения тегов
в символы новой строки в виде простого текста.

Я хотел бы преобразовать это:

The victory halted Spain&rsquo;s 35-game unbeaten streak, handing the Spanish their first defeat since November 2006. The Americans now advance to the final Sunday to face the winner of Thursday&rsquo;s semifinal between South Africa and Brazil, the five-time World Cup winner. Brazil defeated the Americans, 3-0, in their earlier meeting in this tournament.<br>
<br>
In the final, though, the United States will be without midfielder Michael Bradley, who received a red card for a harsh tackle in the 87th minute, the third such ejection for the Americans in this tournament. It was the only careless blemish on an otherwise nearly perfect evening.

к этому:

The victory halted Spain’s 35-game unbeaten streak, handing the Spanish their first defeat since November 2006. The Americans now advance to the final Sunday to face the winner of Thursday’s semifinal between South Africa and Brazil, the five-time World Cup winner. Brazil defeated the Americans, 3-0, in their earlier meeting in this tournament.

In the final, though, the United States will be without midfielder Michael Bradley, who received a red card for a harsh tackle in the 87th minute, the third such ejection for the Americans in this tournament. It was the only careless blemish on an otherwise nearly perfect evening.

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

value = value.Replace("<br>", Environment.NewLine).Trim();

После запуска этого кода это то, что сохраняется в моей базе данных:

The victory halted Spain's 35-game unbeaten streak, handing the Spanish their first defeat since November 2006. The Americans now advance to the final Sunday to face the winner of Thursday's semifinal between South Africa and Brazil, the five-time World Cup winner. Brazil defeated the Americans, 3-0, in their earlier meeting in this tournament.    In the final, though, the United States will be without midfielder Michael Bradley, who received a red card for a harsh tackle in the 87th minute, the third such ejection for the Americans in this tournament. It was the only careless blemish on an otherwise nearly perfect evening.

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

Это правильный способ справиться с этим? Я использую базу данных SQL Server 2005.

Ответы [ 4 ]

4 голосов
/ 25 июня 2009

Ваш метод использования Environment.Newline правильный. Я полагаю, что проблема заключается в том, как некоторые запросы возвращаются непосредственно в SQL Server, при условии, что вы копируете / вставляете непосредственно из SQL Server Management Studio (или аналогичной).

Я на 99% уверен, что если вы извлекаете данные с помощью SqlConnection, а затем выводите их в winform, текстовый файл и т. Д., То вы получите разрывы строк, которые вы ищете.

Извините, но я не могу вспомнить, почему это происходит, когда вы копируете / вставляете прямо из таблицы результатов в SQL Server.

2 голосов
/ 25 июня 2009

Исходя из вашего последующего комментария (когда вы его отлаживали), кажется, что правильное значение по крайней мере правильно отправляется в базу данных.

Возможно, это не так просто, но стоит проверить ... Когда вы говорите, что "запустили запрос, чтобы получить значение ... и вставили его в Word", что вы используете для выполнения запроса? Поскольку я знаю, что если вы запрашиваете что-то с помощью SQL Server 2005 Management Studio в представлении «Результаты в сетку» по умолчанию, оно не отображает новые строки должным образом (я думаю, что оно просто заменяет их пробелами) ... Если вы переключите это на Результаты в текст »(или вы получаете значение из базы данных в своем коде и отлаживаете возвращенное значение), вы получите более точное представление фактического значения, дополненное новыми строками, показывающими ...

1 голос
/ 25 июня 2009

Мне любопытно, как вы получаете "сохраненное" значение. Копируете ли вы его, скажем, из SQL Server Management Studio или выполняете оператор SELECT? Иногда сетки данных, которые отображают информацию в инструментах SQL Server 2005, не отображают строковые данные «точно», так как они хранятся в базе данных. Если вы на самом деле не выполняли оператор SELECT, я бы попробовал это и убедился, что вы не столкнулись с причудой пользовательского интерфейса.

0 голосов
/ 25 июня 2009

Вы пробовали заменить действительными символами новой строки? т.е.

value = value.Replace("<br>", "\r\n").Trim();

Предоставлено Environment.NewLine должен сделать то же самое, но оно того стоит.

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