Преобразование пробела в "+" с использованием C#

Я хочу преобразовать строку в URL-адрес, и вместо пробела ему нужен "+" между ключевыми словами.

Например:

"Hello I am"

чтобы:

"Hello+I+am"

Как мне это сделать?

7 ответов

Решение
String input = "Hello I am";
string output = input.Replace(" ", "+");

Для URL я настоятельно рекомендую использовать Server.UrlEncode (в ASP.NET) или Uri.EscapeUriString (везде) вместо String.Replace.

Ты можешь использовать string.Replace:

"Hello I am".Replace(' ', '+');

Если вы хотите, чтобы URL кодировал строку (чтобы позаботились не только о пробелах), используйте Uri.EscapeUriString:

Uri.EscapeUriString("Hello I am");

Из MSDN:

По умолчанию EscapeUriString Метод преобразует все символы, кроме RFC 2396 незарезервированных символов, в их шестнадцатеричное представление. Если разрешен синтаксический анализ международных идентификаторов ресурсов (IRI) или интернационализированных доменных имен (IDN), метод EscapeUriString преобразует все символы, кроме незарезервированных символов RFC 3986, в их шестнадцатеричное представление. Все символы Unicode преобразуются в формат UTF-8 перед экранированием.

Вы можете попробовать String.Replace

"Hello I am".Replace(' ','+');

Предполагая, что вы хотите заменить пробелы только плюсом, а не выполнять полную URL-кодировку, вы можете использовать встроенную Replace метод:

string withSpaces = "Hello I am";

string withPluses = withSpaces.Replace(' ', '+');
string s = "Hello I am";
s = s.Replace(" ", "+");

Чтобы ответить на часть вашего вопроса "преобразовать строку в URL" (вам не следует преобразовывать строку вручную, если вы хотите правильный URL):

string url = "http://www.baseUrl.com/search?q=" + HttpUtility.UrlEncode("Hello I am");

Вы вызываете Url Encode для каждого параметра, чтобы правильно кодировать значения.

Другие вопросы по тегам