Vb.net String.replace添加额外字符
我试图在Outlook中替换邮件中的一些单词。这是我的代码Vb.net String.replace添加额外字符,vb.net,string,outlook-addin,Vb.net,String,Outlook Addin,我试图在Outlook中替换邮件中的一些单词。这是我的代码 Dim input As String = mail.HTMLBody Dim pattern As String = "QWQ[a-z][a-z][0-9][0-9][0-9][0-9][0-9]" Dim replacement As String Dim rgx As New Regex(pattern) Dim match As Match = R
Dim input As String = mail.HTMLBody
Dim pattern As String = "QWQ[a-z][a-z][0-9][0-9][0-9][0-9][0-9]"
Dim replacement As String
Dim rgx As New Regex(pattern)
Dim match As Match = Regex.Match(input, pattern)
While (match.Success)
replacement = "A" + match.Value + "A"
input = input.Replace(match.value, replacement)
match = match.NextMatch()
End While
mail.HTMLBody = input
对于此输入
QWQrt12345
QWQrt1234533
wwQWQrt12345
QWQrt1234534
qwwQWQrt12345
我预计产量为
AQWQrt12345A
AQWQrt12345A33
wwAQWQrt12345A
AQWQrt12345A34
qwwAQWQrt12345A
但我得到的结果是
AAAAAQWQrt12345AAAAA
AAAAAQWQrt12345AAAAA33
wwAAAAAQWQrt12345AAAAA
AAAAAQWQrt12345AAAAA34
qwwAAAAAQWQrt12345AAAAA
有什么问题吗?只要在每次匹配时添加'A'+匹配+'A' 在输入之前和之后产生AAAA。我被否决了 好的,我解释你的第一个匹配输入结果正是你输入的所有字符都可以匹配,然后你在两边都添加一个字符,并希望用原始值替换替换后的值 以下是获得预期值的c代码:
var input = "QWQrt1234533"; //your second line example
const string pattern = "QWQ[a-z][a-z][0-9][0-9][0-9][0-9][0-9]";
var rgx = new Regex(pattern);
Match match = Regex.Match(input, pattern);
while (match.Success)
{
var replacement= "A" + match.Value + "A";
input = input.Replace(match.Value, replacement);
match = match.NextMatch();
}
Console.Write(input);
导致您执行:AQWQrt12345A33
即使发布了VB代码也没有得到结果在我第一次回复后,您没有编辑原件?状态描述
返回一个新字符串,其中指定字符串的所有匹配项
当前实例将替换为另一个指定的字符串
重要的是,所有发生的事情。。。被替换。由于替换字符串也是正则表达式模式的匹配项,因此它将被替换,从而在每次迭代时添加另一组“a”
请尝试使用类似以下内容的测试用例:
replacement = match.Value.Replace("Q", "A")
这里的细节并不重要,您可以随意更改,关键是您可以更改某些内容,这样字符串就不会重复匹配 对不起,我没收到。你能提供正确的代码更改吗?谢谢Justin的解释!我现在使用这种方法来获取预期的输出input=input.Replacematch,XSDEGTHYI input=input.ReplaceXSDEGTHYI,replacement