Самый легкий способ преобразовать URL в гиперссылку в строке C#?

Если вы используете веб-сайт и заполняете форму для отправки информации (например, номер вашего социального страхования), вы хотите быть уверенным, что информация отправляется на сайт, на который, по вашему мнению, отправляется. Поэтому браузеры были созданы, чтобы сказать по умолчанию: «Не отправляйте информацию в домен, отличный от посещаемого домена».

В конце концов это стало слишком ограничивающим, но идея по умолчанию все еще остается в браузерах. Не позволяйте веб-странице отправлять информацию в другой домен. Но это все проверки браузера. Chrome и firefox и т. Д. Создали код, который гласит: «Перед отправкой этого запроса мы будем проверять, совпадает ли пункт назначения с посещенной страницей».

Почтальон (или CURL на линии cmd) не имеет встроенных проверок. Вы вручную взаимодействуете с сайтом, чтобы иметь полный контроль над тем, что вы отправляете.

15
задан abatishchev 18 April 2010 в 07:29
поделиться

4 ответа

Регулярные выражения являются, вероятно, Вашим другом для этого вида задачи:

Regex r = new Regex(@"(https?://[^\s]+)");
myString = r.Replace(myString, "<a href=\"$1\">$1</a>");

регулярному выражению для соответствия URL, возможно, понадобилось бы немного работы.

23
ответ дан 1 December 2019 в 01:17
поделиться

Я сделал эту точно ту же самую вещь с , jQuery, использующий JSON API вот, является функцией linkify:

String.prototype.linkify = function() {
    return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
        return m.link(m);
    });
 };
7
ответ дан 1 December 2019 в 01:17
поделиться

Это - на самом деле ужасная проблема. URL могут содержать (и закончиться), пунктуация, таким образом, может быть трудно определить, где URL на самом деле заканчивается, когда это встраивается в обычный текст. Например:

http://example.com/.

допустимый URL, но это мог так же, как легко быть конец предложения:

I buy all my witty T-shirts from http://example.com/.

Вы не можете просто проанализировать, пока пространство не найдено, потому что затем Вы сохраните период как часть URL. Вы также не можете просто проанализировать до периода или пространства найден, потому что периоды чрезвычайно распространены в URL.

Да, regex является Вашим другом здесь, но построение соответствующего regex является твердой частью.

Выезд это также: Расширяющиеся URL с Regex в.NET .

5
ответ дан 1 December 2019 в 01:17
поделиться

/ поболеть за RedWolves

от: this.replace (/ [A-Za-z] +: // [A-Za-z0-9- ]] +. [A-Za-z0- 9- :% & \? /.=] + /, function (m) {...

см .: / [A-Za-z] +: // [A-Za-z0-9 - ] +. [A-Za-z0-9- :% & \? /.=] + /

Вот код для адресов "anyprotocol": // "anysubdomain / domain" . "anydomainextension and address",

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

Я использовал jQuery для легко изменить атрибуты этих ссылок на "target = _blank" в моей логике загрузки контента, даже если метод .link не позволяет вам их настраивать.

Лично мне нравится прикреплять собственный метод к строковому объекту для on строковая фильтрация мух (объявление String.prototype.linkify), но я не уверен, как это отразится в крупномасштабной среде, где вам придется организовать 10+ пользовательских функций, подобных linkify. Я думаю, вы определенно придется делать что-то еще с твоим структура кода на этом этапе.

Может быть, ветеринар наткнется здесь и просветит нас.

1
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: