簡體   English   中英

從字符串中刪除文本,直到達到某個字符

[英]Remove text from string until it reaches a certain character

我正試圖找出這個問題。 我需要“修復”一些鏈接,這是一個例子:

  1. www.site.com/link/index.php?REMOVETHISHERE
  2. www.site.com/index.php?REMOVETHISHERE

所以基本上我想刪除所有東西,直到它到達? 字符。 謝謝你的幫助。

 string s = @"www.site.com/link/index.php?REMOVETHISHERE";
 s = s.Remove( s.LastIndexOf('?') );
 //Now s will be simply "www.site.com/link/index.php"

應該這樣做

盡管正確制作的字符串操作可行,但提取部分URI信息的更一般方法是使用System.Uri類型,該類型具有封裝這些操作的方法,例如

var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE");
var part = uri.GetLeftPart(UriPartial.Path);

這將更清楚地傳達您的代碼的意圖,並且您將重新使用已知可用的當前實現。

如果字符串不表示有效的URI, System.Uri構造函數將拋出異常,但無論如何,如果遇到無效的URI,您仍可能想要在程序中調用其他一些行為。 要檢測無效的URI,您可以捕獲異常或使用其中一個TryCreate()重載。

使用string.split

string URL = "www.site.com/link/index.php?REMOVETHISHERE"
var parts = URL.Split('?');

parts[0]將包含“www.site.com/link/index.php”, parts[1]將包含“REMOVETHISHERE”。 然后,您可以使用您想要的任何部分。

在嘗試訪問數組的第二個元素之前,您應該添加檢查以確保有兩個部分。 你可以(例如)檢查字符串是否包含“?” 在嘗試調用Split之前。

刪除最后一個“?” 以及之后的一切:

    string input = @"www.site.com/link/index.php?REMOVETHISHERE";
    input = input.Remove(input.LastIndexOf('?'));

    OR

    string input = @"www.site.com/link/index.php?REMOVETHISHERE";
    input = input.Substring(0, input.LastIndexOf('?'));

現在輸出將是:

www.site.com/link/index.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM