繁体   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