替换/使用正则表达式

时间:2012-11-28 11:14:11

标签: c# regex string

我有一个关于用正则表达式或任何其他最佳实践或有效方式替换某些字符的问题 这是我输入的内容,它大致采用相同的形式:A/ABC/N/ABC/123
输出应如下所示:A_ABC_NABC123,基本上前2个/应更改为_,其余部分已删除。
当然我可以做一些String.Replace。等一个接一个,但我认为这不是一个好方法。我寻求更好的解决方案。

那么如何使用Regex呢?

2 个答案:

答案 0 :(得分:7)

虽然可能有一种更简单的方法,但它会这样做:

static class CustomReplacer
{
    public static string Replace(string input)
    {
        int i = 0;
        return Regex.Replace(input, "/", m => i++ < 2 ? "_" : "");
    }
}

var replaced = CustomReplacer.Replace("A/ABC/N/ABC/123");

我已经包装了这样的代码,以确保您不会意外地int变量。

修改:还有this overload在一定数量的替换后停止,但您必须分两步完成:将前两个/替换为_,然后

替换剩下的/

答案 1 :(得分:0)

试试这个:

string st = "A/ABC/N/ABC/123";
string [] arrStr = st.Split(new char[] { '/' });
st = string.Empty;
for (int i = 0; i < arrStr.Length; i++)
{
    if (i < 2)
        st += arrStr[i] + "_";
    else
        st += arrStr[i];
}