Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net String.replace添加额外字符_Vb.net_String_Outlook Addin - Fatal编程技术网

Vb.net String.replace添加额外字符

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

我试图在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 = 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