Удалить символы после определенного символа в строке, а затем удалить подстроку?

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

У меня есть следующий код:

[Test] public void stringManipulation() { String filename = "testpage.aspx"; String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue"; String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", ""); String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length - filename.Length); String expected = "http://localhost:2000/somefolder/myrep/"; String actual = urlWithoutPageName; Assert.AreEqual(expected, actual); } 

Я попробовал решение в вопросе выше (надеясь, что синтаксис будет таким же!), Но нет. Я хочу сначала удалить queryString, которая может быть любой переменной длины, а затем удалить имя страницы, которая снова может быть любой длины.

Как я могу удалить строку запроса из полного URL-адреса, чтобы пройти этот тест?

Для манипуляции с строкой, если вы просто хотите убить все после?, Вы можете сделать это

 string input = "http://www.somesite.com/somepage.aspx?whatever"; int index = input.IndexOf("?"); if (index > 0) input = input.Substring(0, index); 

Изменить: если все после последней косой черты сделать что-то вроде

 string input = "http://www.somesite.com/somepage.aspx?whatever"; int index = input.LastIndexOf("/"); if (index > 0) input = input.Substring(0, index); // or index + 1 to keep slash 

В качестве альтернативы, поскольку вы работаете с URL-адресом, вы можете с ним что-то сделать, как этот код

 System.Uri uri = new Uri("http://www.somesite.com/what/test.aspx?hello=1"); string fixedUri = uri.AbsoluteUri.Replace(uri.Query, string.Empty); 

Чтобы удалить все перед первым “/”

  input = input.Substring(input.IndexOf("/")); 

Чтобы удалить все после первого “/”

  input = input.Substring(0, input.IndexOf("/")+1); 

Чтобы удалить все до последнего “/”

  input = input.Substring(input.LastIndexOf("/")); 

Чтобы удалить все после последнего “/”

  input = input.Substring(0, input.LastIndexOf("/")+1); 

Еще более простой вариант удаления символов после указанного символа – использовать метод string.Remove () следующим образом:

Чтобы удалить все после первого “/”

  input = input.Remove(input.IndexOf("/")+1); 

Чтобы удалить все после последнего “/”

  input = input.Remove(input.LastIndexOf("/")+1); 

Класс Uri – это, как правило, лучший способ манипулировать Urls.

Request.QueryString помогает вам получить parameters и значения, включенные в URL

пример

 string http = "http://dave.com/customers.aspx?customername=dave" string customername = Request.QueryString["customername"].ToString(); 

поэтому переменная customername должна быть равна dave

С уважением

Я второй Hightechrider: для вас уже создан специализированный class Url.

Я также должен указать, что PHP replaceAll использует регулярные выражения для шаблона поиска, которые вы также можете использовать в .NET. Посмотрите на class RegEx.

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

 string1 = string1.Substring(string1.IndexOf('$') + 1); 

Что это делает, берет все перед $ char и удаляет его. Теперь, если вы хотите удалить элементы после символа, просто измените +1 на -1 и вы установите!

Но для URL-адреса я хотел бы использовать встроенный .NET-class для этого.

вы можете использовать встроенный метод .NET для удаления QueryString . т.е. Request.QueryString.Remove["whatever"];

здесь независимо от того, что [] является именем querystring которое вы хотите удалить.

Попробуйте это … Надеюсь, это поможет.

  • Как получить согласованное байтовое представление строк в C # без ручного указания кодировки?
  • Удалить значение Null из массива String в java
  • Как эффективно конкатенировать строки в Go?
  • Почему «a»! = «A» в C?
  • C # эквивалентно charAt ()?
  • Каков наилучший способ создания строки разделенных элементов в Java?
  • Преобразовать текст camelCaseText в текст предложения
  • Как измерить сходство между двумя строками?
  • Как читать строку с клавиатуры с помощью C? получение ошибки сегментации, проходящей в char *
  • Почему String.replaceAll () в java требует 4 слэша «\\\\» в regex, чтобы фактически заменить «\»?
  • Это хорошая идея вернуть «const char *» из функции?
  • Interesting Posts

    Запуск rdesktop через SSH-туннель в одной команде

    MVC5 Razor html.dropdownlist для набора, выбранного, когда значение находится в массиве

    Изменяйте программный цвет с возможностью рисования

    JavaFX – Как использовать метод в controllerе с другого controllerа?

    Android получает дату до 7 дней (одна неделя)

    C ++: обоснование правила скрытия

    Windows 8.1 отсутствует файл шрифтов после перезагрузки

    Как получить доступ к содержимому iframe с помощью jQuery?

    Являются ли дни прохождения const std :: string & в качестве параметра более?

    Ожидание параллельных сценариев партии

    Лучший способ загрузить модуль / class из папки lib в Rails 3?

    OS X: Извлечь аудиосистему системы, чтобы удалить высокий уровень шума?

    Установите новую вкладку в Firefox.

    Каковы различия в просмотре 1080p и 720p версии одного и того же носителя на экране 720p?

    Как открыть PDF-файл в новой вкладке или окне вместо его загрузки (используя asp.net)?

    Давайте будем гением компьютера.