[英]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.