나는 이것이 단순한 것처럼 보이고 문자열 / 문자 / 정규 표현식에 많은 질문이있을 때 이것을 게시하는 바보 같은 느낌이 들지만, 내가 필요한 것을 찾을 수 없었습니다 (다른 언어를 제외하고 : 특정 포인트 후 모든 텍스트 제거 ).
다음 코드가 있습니다.
[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을 사용하고 있으므로이 코드와 같은 방법으로 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);
답변
여기 또 다른 간단한 해결책이 있습니다. 다음 코드는 ‘|’앞의 모든 것을 반환합니다. 캐릭터:
if (path.Contains('|'))
path = path.Split('|')[0];
실제로 원하는만큼 많은 구분 기호를 가질 수 있지만 분리 문자가 하나만 있다고 가정하면 ‘|’다음에 모든 것을 얻는 방법은 다음과 같습니다.
if (path.Contains('|'))
path = path.Split('|')[1];
(두 번째 코드에서 변경된 것은 배열의 인덱스였습니다.)
답변
Uri 클래스는 일반적으로 Urls 조작에 가장 적합한 방법입니다.
답변
특정 문자 전에 모든 것을 제거하려면 아래를 사용하십시오.
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 클래스를 살펴보십시오.