C# 替换字符串中的值

C# 替换字符串中的值,c#,regex,C#,Regex,我希望在字符串中查找匹配项,对匹配项执行操作,然后替换原始匹配项 例如,在字符串中查找@yahoo,查找将符号和后面的所有内容匹配到第一个空格的情况。当然,在一个字符串中可以有多个值进行匹配,因此每个匹配都有一个值 我在考虑正则表达式,但不确定是否在第一个空白处(这个的正则表达式?)匹配符号和之后的所有内容。或者其他更简单的方法 对此: 寻找匹配所有符号后的第一个空白 regexp是@\S+ 参考资料:。例如: string str = "@yahoo aaaa bbb"; string rep

我希望在字符串中查找匹配项,对匹配项执行操作,然后替换原始匹配项

例如,在字符串中查找@yahoo,查找将符号和后面的所有内容匹配到第一个空格的情况。当然,在一个字符串中可以有多个值进行匹配,因此每个匹配都有一个值

我在考虑正则表达式,但不确定是否在第一个空白处(这个的正则表达式?)匹配符号和之后的所有内容。或者其他更简单的方法

对此:

寻找匹配所有符号后的第一个空白

regexp是
@\S+

参考资料:。

例如:

string str = "@yahoo aaaa bbb";
string replacedStr = str.Replace("@yahoo", "replacement");
查阅文件:

您是指符号“
”和“
”还是在符号“
@
”处

这应该满足您的需要:
&([\S\.]+)\b

或对于at符号:
@([\S\.]+)\b

如果你是用C#写的,正则表达式可能是你最好的选择。代码非常简单

MatchCollection matches = Regex.Matches(/*input*/, /*pattern*/)
foreach (Match m in matches)
{
    /*Do work here*/
}
为了学习正则表达式和相关的语法,我曾经开始学习。里面有很多好的信息,而且很容易阅读。

尝试使用String.Replace()函数:

String x="lalala i like being @Yahoo , my Email is John@Yahoo.com";

x=x.Replace("@Yahoo","@Gmail");
X现在将是:“拉拉,我喜欢成为@Gmail,我的电子邮件是John@Gmail.com";

要知道“@Yahoo”后面的下一个空格在哪里,请使用location变量,以及String.IndexOf()和String.LastIndexOf()


希望对您有所帮助。

假设您的正则表达式设置正确,您可以利用的重载之一包含委托。
MatchEvaluator
是一个
Func
委托(意味着任何
公共字符串方法(匹配)
方法都将用作输入),返回值是您要用其替换原始字符串的值。搜索的正则表达式是
(@\S+
,意思是“匹配
@
符号,后跟任何非空白字符(
\S
),至少一次(
+

为了@matching的目的,在输入
@yahoo.com上运行上述正则表达式将是@simple。
,它在
@yahoo.com
@simple
@matching.
上匹配。
(注意,它在
@matching.
上包括点蚀)


希望能有所帮助!

我认为正则表达式.Replace是您最好的选择。您可以简单地执行以下操作:

string input = "name@yahoo.com is my email address";
string output = Regex.Replace(input, @"@\S+", new MatchEvaluator(evaluateMatch));
您只需要定义evaluateMatch方法,例如:

private string evaluateMatch(Match m)
{
    switch(m.Value)
    {
        case "@yahoo.com": 
            return "@google.com";
            break;
        default:
            return "@other.com";
    }
}

您应该发布一个示例字符串。在@yahoo中,符号AND在哪里?
@
被调用,而不是符号AND(看起来像:
&
)。这不适用于@yahoo.com(根据OP请求,您需要匹配所有内容,直到第一个空格)@Steve谢谢。我修改了它,以便它也能捕捉到
。David的答案也有同样的问题。该模式与完整字符串
@yahoo.com
不匹配,但只有
@yahoo
+1,现在您的模式与已接受的答案相同,但您也尝试回答问题的另一部分。
string input = "name@yahoo.com is my email address";
string output = Regex.Replace(input, @"@\S+", new MatchEvaluator(evaluateMatch));
private string evaluateMatch(Match m)
{
    switch(m.Value)
    {
        case "@yahoo.com": 
            return "@google.com";
            break;
        default:
            return "@other.com";
    }
}