替换字符串中的值

时间:2012-06-04 14:24:40

标签: c# regex

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

例如,在字符串中查找@yahoo,查看将&符号后的所有内容匹配到第一个空白区域。当然,在单个字符串中可以有多个值匹配,因此每个匹配都是一个值。

我正在考虑正则表达式,但我不确定在&符号之后匹配第一个空白区域(正则表达式为什么?)。或者其他更简单的方法吗?

7 个答案:

答案 0 :(得分:4)

为此:

  

查看将&符号后的所有内容与第一个空白区域匹配

regexp是@\S+

参考:Character Classes

答案 1 :(得分:2)

假设您正确设置了正则表达式,您可以利用Regex.Replace的一个重载来包含MatchEvaluator代理。 MatchEvaluatorFunc<Match,string>委托(意味着任何public string Method(Match match)方法将作为输入),返回值是您要用原始字符串替换的值。搜索的正则表达式为(@\S+),表示“匹配@符号,后跟任何非空白字符(\S)至少一次(+)。

Regex.Replace(input, "(@\S+)", (match) => { /* Replace logic here. */ })

在输入@yahoo.com is going to be @simple for purposes of @matching.上运行上述正则表达式,它在@yahoo.com@simple@matching.上匹配(请注意它包含@matching.上的点击)

希望有所帮助!

答案 2 :(得分:1)

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

MatchCollection matches = Regex.Matches(/*input*/, /*pattern*/)
foreach (Match m in matches)
{
    /*Do work here*/
}

为了学习正则表达式和相关语法,我使用http://www.regular-expressions.info/tutorial.html开始。那里有很多好的信息,而且易于阅读。

答案 3 :(得分:0)

例如:

string str = "@yahoo aaaa bbb";
string replacedStr = str.Replace("@yahoo", "replacement");

查看文档: string.Replace

答案 4 :(得分:0)

您的意思是&符号&还是符号@

这应该做你需要的: &([\S\.]+)\b

或at-symbol: @([\S\.]+)\b

答案 5 :(得分:0)

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

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

x=x.Replace("@Yahoo","@Gmail");

X现在是:“lalala我喜欢@Gmail,我的电子邮件是John@Gmail.com”;

要知道“@Yahoo”之后的下一个空格,请使用位置变量,使用String.IndexOf()和String.LastIndexOf()。

int location=x.IndexOf("@Yahoo");//gets the location of the first "@Yahoo" of the string.

int SpaceLoc=x.IndexOf("@Yahoo",location);// gets the location of the first white space after the first "@Yahoo" of the string.

希望有所帮助。

答案 6 :(得分:0)

我认为RegEx.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";
    }
}