替换字符串中的值

本文关键字:字符串 替换 | 更新日期: 2023-09-27 18:36:16

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

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

我正在考虑正则表达式,但不确定是否将 & 符号之后的所有内容与第一个空格匹配(正则表达式?或者任何其他更简单的方法?

替换字符串中的值

为此:

查看将 & 符号之后的所有内容与第一个空格匹配

正则表达式是@'S+ .

参考:字符类。

假设您正确设置了正则表达式,则可以利用正则表达式.替换的重载之一来包含 MatchEvaluator 委托。MatchEvaluator是一个Func<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.上包含标点符号)。

希望对您有所帮助!

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

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

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

例如:

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

查看文档:字符串。取代

尝试使用 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"之后的下一个空格在哪里,请使用位置变量,以及 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.

希望有帮助。

你的意思是 & & 还是 at-symbol @

这应该可以满足您的需求: &(['S'.]+)'b

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

我认为RegEx.Replacement是你最好的选择。 您可以简单地执行以下操作:

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";
    }
}