簡體   English   中英

刪除C#之間的字符

[英]Remove characters between in c#

我有這樣的字符串值

string strValue = "!return.ObjectV,rgmK12D;1.Value";

在此字符串中,如何將字符從rgm to ;1刪除rgm to ;1

下面的代碼將刪除rgm中的所有字符,但是我只需要刪除最多;1字符

strValue =  strValue.Substring(0, strValue.LastIndexOf("rgm"));

預期結果:

string strValue = "!return.ObjectV,.Value";

編輯1:

我正在嘗試從下面的字符串中刪除上述字符

Sum ({rgmdaerub;1.Total_Value}, {rgmdaerub;1.Major_Value})

結果

Sum ({rgmdaerub;1.Total_Value}, {Major_Value})

預期結果

Sum ({Total_Value}, {Major_Value})

與正則表達式

string strValue = "!return.ObjectV,rgmK12D;1.Value";
var output = Regex.Replace(strValue, @" ?rgm.*?;1", string.Empty);
// !return.ObjectV,.Value

一個簡單的解決方案是:

strValue = strValue.Substring(0, strValue.LastIndexOf("rgm")) + strValue.Substring(strValue.LastIndexOf(";1") + 2);

編輯:

根據您的編輯,似乎您希望替換所有出現的事件。 另外,您的預期結果帶有“。” 以及刪除。 要替換所有出現的內容,您可以根據@Damith的答案進行調整:

strValue = Regex.Replace(strValue, "rgm.*?;1\\.", "");

一種方法是這樣做:

strValue =  strValue.Substring(0, strValue.LastIndexOf("rgm")) +
    strValue.Substring(strValue.LastIndexOf(";1"), strValue.Length);

這樣,您可以得到第一部分和第二部分,然后將它們連接在一起。 如果您只有這些字符的一個實例,這將起作用。

您可以使用類似這樣的東西。 首先找到“ rgm”和“; 1”位置,然后刪除這些索引之間的字符。

int start = strValue.LastIndexOf("rgm");
int end = strValue.LastIndexOf(";1");
string str = strValue.Remove(start, (end-start)+2);

您可以使用string.IndexOf()string.Replace()

        var i = strValue.IndexOf("rgm");
        var j = strValue.IndexOf(";1");
        var removePart = strValue.Substring(i, j - i);
        strValue.Replace(removePart, string.Empty);

暫無
暫無

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

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