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