sourcecode

문자열의 특정 문자 뒤에 있는 문자를 제거한 다음 부분 문자열을 제거하시겠습니까?

copyscript 2023. 9. 11. 21:59
반응형

문자열의 특정 문자 뒤에 있는 문자를 제거한 다음 부분 문자열을 제거하시겠습니까?

이것이 단순해 보이고 문자열/문자/정규어에 대한 질문이 많지만 필요한 것을 찾을 수 없을 때 이 글을 올리는 것이 바보 같은 기분이 듭니다(다른 언어를 제외하고는).특정 지점 이후의 모든 텍스트를 제거합니다.

다음 코드가 있습니다.

[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);

지정한 문자 뒤에 있는 문자를 제거하기 위한 훨씬 더 간단한 해결책은 문자열을 사용하는 것입니다.다음과 같이 () 방법을 제거합니다.

첫번째 후에 모든 것을 제거하는 것./

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을 a -1로 변경하면 됩니다!

하지만 URL은 내장된 것을 사용할 것입니다.NET 클래스로 진행합니다.

Request.QueryString당신이 그것을 얻는 것을 돕습니다.parameters그리고 그 안에 포함된 값들.URL

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

따라서 고객 이름 변수는 dave와 같아야 합니다.

안부 전해요

두 번째 하이테크라이더: 이미 구축된 전문 URL 클래스가 있습니다.

그러나 PHP의 replaceAll은 검색 패턴에 정규 표현을 사용하며, 에서 할 수 있습니다.NET도 마찬가지입니다. RegEx 클래스를 보십시오.

사용할 수 있습니다.NET을 NET 을 의 을 QueryString. 즉,

[]의 이름이 무엇이든 간에querystring제거하고 싶은 항목입니다.

이거 먹어봐요이게 도움이 됐으면 좋겠습니다.

하여 쿼리 변수를 할 수 ( 를 할 하여 를 할 를 뒤의 모든 것).?) 줄을 지어

public static string RemoveQueryParameters(this string str)
    {
        int index = str.IndexOf("?");
        return index >= 0 ? str.Substring(0, index) : str;
    }

언급URL : https://stackoverflow.com/questions/2660723/remove-characters-after-specific-character-in-string-then-remove-substring

반응형