Как мне преобразовать текст в гиперссылки в C #? - PullRequest
1 голос
/ 28 февраля 2011

Я очень, очень новичок в разработке на C # и ASP.NET.

Я хотел бы найти и заменить некоторые слова, встречающиеся в основном тексте веб-страницы.Каждый раз, когда в основном тексте появляется определенное слово, я хотел бы преобразовать это слово в гиперссылку, которая ссылается на другую страницу нашего сайта.

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

Ответы [ 5 ]

3 голосов
/ 28 февраля 2011

Несколько способов сделать это.

string text = "We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.";

string augmentedText = text.Replace("provide", "<a href='#provide'>provide</a>");

Вы также можете использовать регулярные выражения для достижения этой цели.

Вот пример, который преобразует каждое слово в верхний регистр:

public static string MatchEval(Match m)
{
    return m.ToString().ToUpper();
}

static void Main(string[] args)
{
    string text = "This is some sample text.";

    Console.WriteLine(text);

    string result = Regex.Replace(text, @"\w+", new MatchEvaluator(MatchEval));

    Console.WriteLine(result);
}

Надеюсь, это поможет ...... Удачи!

1 голос
/ 28 февраля 2011

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

Возможно, вы также захотите поискать в Интернете API Wiki, которые помогут вам создать решение, и вам не придется изобретать теплую воду.

Я уверен, что следующая ссылка поможет вам освоить регулярные выражения. Скачайте тестер выражений и поиграйте с ним немного.

http://www.radsoftware.com.au/articles/regexlearnsyntax.aspx

0 голосов
/ 28 февраля 2011

Ладно, Эмили, чтобы немного помочь вам в сжатые сроки:

Прочтите следующую статью о том, как извлечь html-контент тела в коде: http://west -wind.com/weblog/posts/481.aspx

Предположим, у вас есть вывод Render (), хранящийся в переменной с именем _pageContent

Я не , используялюбые регулярные выражения сейчас, так как у меня нет времени думать о них должным образом.Вы можете немного поиграть с этим сами.Следующая ссылка может указать вам направление: Regex для сопоставления нескольких строк

public static void ChangeWordsToLinks()
{
  Dictionary<string, string> _wordLinkCollection = new Dicationary<string, string>();
  // fill the collection which will replace words by links here
  // Additionally you can fetch this from a database and loop 
  // through a DataTable to fill this collection
  _wordLinkCollection.add("foo", "http://www.foobar.com");
  _wordLinkCollection.add("bar", "http://www.barfoo.com");

  // this is lazy code and SHOULD be optimized to a single RegExp string.
  foreach(KayValuePair<string, string> pair in _wordLinkCollection)
  {
    _pageContent.Replace(String.Format(" {0} ", pair.Key), 
        String.Format("<a href='{0}'>{1}</a>", pair.Value, pair.Key));
  }
}

Рад, если я могу вам чем-то помочь

0 голосов
/ 28 февраля 2011

если у вас есть какие-то конкретные слова, мы обычно используем какой-то специальный текст, например [ИМЯ], [КЛАСС], чтобы распознать текст, затем делаем следующее:

  1. Считайте html, aspx файл сtextreader class.
  2. содержит весь текст внутри строки и начинает строку .replace ("[Name]", @ "...") ... будут обязательными атрибутами,
  3. переписать текст на новой странице с тем же расширением.
0 голосов
/ 28 февраля 2011

Похоже, вы хотите создать приложение на c #, которое открывает файл и просматривает исходный код.

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

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

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

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