Я чувствую себя глупым, когда публикую это, когда это кажется простым и есть множество вопросов по строкам / символам / регулярным выражениям, но я не смог найти то, что мне нужно (кроме как на другом языке: Удалить весь текст после определенной точки ).
У меня есть такой код:
[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-адреса, чтобы этот тест прошел?
/
?Uri uri
, а затем получить доступuri.Segments
. Это вернет массив, а "somepage.aspx" будет последним элементом.Убрать все до первого
/
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);
источник
Вот еще одно простое решение. Следующий код вернет все до "|" персонаж:
if (path.Contains('|')) path = path.Split('|')[0];
Фактически, у вас может быть столько разделителей, сколько вы хотите, но если у вас есть только один символ разделения, вот как вы получите все после '|':
if (path.Contains('|')) path = path.Split('|')[1];
(Все, что я изменил во втором фрагменте кода, - это индекс массива.)
источник
Класс Uri обычно лучше всего подходит для управления URL-адресами.
источник
Чтобы удалить все перед определенным символом, используйте ниже.
string1 = string1.Substring(string1.IndexOf('$') + 1);
Он берет все до $ char и удаляет его. Теперь, если вы хотите удалить элементы после символа, просто измените +1 на -1, и все готово!
Но для URL-адреса я бы использовал встроенный класс .NET.
источник
Request.QueryString
поможет вамparameters
включить ценности и вURL
пример
string http = "http://dave.com/customers.aspx?customername=dave" string customername = Request.QueryString["customername"].ToString();
поэтому переменная customername должна быть равна dave
С уважением
источник
Второй Hightechrider: для вас уже создан специализированный класс Url.
Однако я должен также отметить, что PHP replaceAll использует регулярные выражения для шаблона поиска, что вы можете делать и в .NET - посмотрите на класс RegEx.
источник
вы можете использовать встроенный метод .NET, чтобы удалить
QueryString
. т.е.Request.QueryString.Remove["whatever"];
Попробуй ... Надеюсь, это поможет.
источник