在字符串c#中替换int

时间:2017-09-18 16:26:07

标签: c# regex string

我正在尝试用int^替换<int>^的每个子字符串。

例如:如果我有字符串"aaa500^bbb"我想获取字符串"aaa<500>^bbb"

3 个答案:

答案 0 :(得分:5)

这是regular expression的好例子。

Regex.Replace("aaa500^bbb", @"(\d+)\^", @"<$1>^") // aaa<500>^bbb

  • (\d+)\^捕获一个或多个数字,后跟插入符^
  • <$1>^将捕获的数字替换为有角度的括号之间的捕获数字,后跟插入符^

答案 1 :(得分:3)

答案

根据我的评论......

下面的正则表达式如下:

  • 匹配一个或多个数字\d+并将其捕获到第1组
  • 匹配^

替换的工作原理如下:

  • 在第1组匹配的情况下,添加<并附加>^

代码

You can see this code in use here

正则表达式

(\d+)\^

换人

<$1>^

结果

输入

aaa5^bbb
aaa55^bbb

输出

aaa<5>^bbb
aaa<55>^bbb

答案 2 :(得分:1)

根据这一点,应该有效(未经测试)。可以稍后扩展以确保获取的值实际上是一个有效的int(例如,不溢出)。

public static string Do(string myString)
{
    var sb = new StringBuilder();
    var open = false;
    var digits = new HashSet<char>{'0', '1', '2','3','4','5','6','7','8','9'};
    foreach(var c in myString)
    {
        if (digits.Contains(c))
        {
            if (!open)
            {
                sb.Append("<");
                open = true;
            }
        }
        else
        {
            if (open)
            {
                open = false;
                sb.Append(">");
            }
        }
        sb.Append(c);
    }
    if (open)
    {
        sb.Append(">");
    }
    return sb.ToString();
}