C# 如何替换部分未知字符串

C# 如何替换部分未知字符串,c#,string-operations,C#,String Operations,我需要替换或更好地删除一个字符串,我知道它的开头和结尾。 某些字符未知,字符串长度也未知。 当然,我可以使用子字符串和其他c字符串操作,但是没有简单的替换通配符选项吗 mystring.Replace("O(*)", ""); 这是个不错的选择。 我知道字符串以O开头,以O结尾。 它可能比字符串看起来更像一种方法;还有别的吗 这里的结果应该是;还有别的吗 用一个简单的替换就可以了吗? 那么高级选项呢,这个字符串存在不止一次,如下所示: Osomething;奥索美酮;QGanything其他的

我需要替换或更好地删除一个字符串,我知道它的开头和结尾。 某些字符未知,字符串长度也未知。 当然,我可以使用子字符串和其他c字符串操作,但是没有简单的替换通配符选项吗

mystring.Replace("O(*)", "");
这是个不错的选择。 我知道字符串以O开头,以O结尾。 它可能比字符串看起来更像一种方法;还有别的吗 这里的结果应该是;还有别的吗 用一个简单的替换就可以了吗? 那么高级选项呢,这个字符串存在不止一次,如下所示:
Osomething;奥索美酮;QGanything其他的

看看正则表达式

以下内容将满足此情况:

var result = Regex.Replace(originalString, @"O\(.*?\)", "");
这意味着什么:

@-关闭C解释\作为转义,因为否则编译器将看到我们的\并尝试用另一个字符替换它,就像它成为换行符一样,并且没有\所以这是编译器错误。正则表达式还使用\作为转义字符,因此如果不使用@将斜杠插入字符串中,以便正则表达式解释为斜杠来执行正则表达式转义,则需要双C斜杠,这会使正则表达式模式更加混乱 c字符串的开头 O \文字字符O后跟文字字符-括号在正则表达式中具有特殊含义,因此反斜杠禁用特殊含义 .*? 匹配零个或多个懒惰/悲观字符 \文字的 结束 *?这是一件复杂的事情,需要更多的解释:

用正则表达式。表示匹配任何单个字符,*表示前一个字符的零个或多个。这样,.*表示任何字符的零个或多个

那么,问题是什么?为了什么

默认情况下,regex*是贪婪的-a.*,它会吃掉整个输入字符串,然后开始向后工作,将字符吐出,并检查是否匹配。如果你像你说的那样连续有两个:

K(hello);O(mystring);O(otherstring);L(byebye)
然后你贪婪地匹配它,然后O\.\将匹配初始的O,然后消耗所有的输入,然后吐出一个尾随,并声明它找到了匹配,因此。*匹配mystring;卵丝;拜拜


我们不想要这个。相反,我们希望它一次前进一个字符,寻找匹配的字符。把这个放进去?在*从贪婪模式更改为悲观/懒惰模式后,输入将向前扫描,而不是压缩到末尾并向后扫描。这意味着O\.*?匹配mystring,然后再匹配otherstring,结果为Khello;;;伊拜拜,而不是凯洛

看看正则表达式

以下内容将满足此情况:

var result = Regex.Replace(originalString, @"O\(.*?\)", "");
这意味着什么:

@-关闭C解释\作为转义,因为否则编译器将看到我们的\并尝试用另一个字符替换它,就像它成为换行符一样,并且没有\所以这是编译器错误。正则表达式还使用\作为转义字符,因此如果不使用@将斜杠插入字符串中,以便正则表达式解释为斜杠来执行正则表达式转义,则需要双C斜杠,这会使正则表达式模式更加混乱 c字符串的开头 O \文字字符O后跟文字字符-括号在正则表达式中具有特殊含义,因此反斜杠禁用特殊含义 .*? 匹配零个或多个懒惰/悲观字符 \文字的 结束 *?这是一件复杂的事情,需要更多的解释:

用正则表达式。表示匹配任何单个字符,*表示前一个字符的零个或多个。这样,.*表示任何字符的零个或多个

那么,问题是什么?为了什么

默认情况下,regex*是贪婪的-a.*,它会吃掉整个输入字符串,然后开始向后工作,将字符吐出,并检查是否匹配。如果你像你说的那样连续有两个:

K(hello);O(mystring);O(otherstring);L(byebye)
然后你贪婪地匹配它,然后O\.\将匹配初始的O,然后消耗所有的输入,然后吐出一个尾随,并声明它找到了匹配,因此。*匹配mystring;卵丝;拜拜


我们不想要这个。相反,我们希望它一次前进一个字符,寻找匹配的字符。把这个放进去?在*从贪婪模式更改为悲观/懒惰模式后,输入将向前扫描,而不是压缩到末尾并向后扫描。这意味着O\.*?匹配mystring,然后再匹配otherstring,结果为Khello;;;伊拜拜,而不是凯洛

会不会有类似Ofoo的东西;QGhello Obar世界?如果是这样的话,预期的结果会是什么呢;QGhello Obar世界?如果是的话,预期的结果是什么?很好的解释。。。谢谢你,我将尝试不同的字符串:-伟大的解释。。。谢谢,我将用不同的字符串进行尝试:-