什么方法/如何用单个字符替换两个连续的相同字符有不同的条件

时间:2014-02-20 14:12:21

标签: c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5

{
    class Program {
        static void Main(string[] args) {

            Console.WriteLine("INPUT: ");
            String input = Console.ReadLine();
            int index = 0;

            StringBuilder builder = new StringBuilder(input);
            builder.Replace("a", "aa");

            builder.Replace("bb", "b");

            builder.Replace("c", "");
            Console.WriteLine("OUTPUT: " + builder);

            Console.ReadKey();
        }
    }
}

当我输入两个连续的字母c时,它必须将cc添加到输出中。如果我输入一个c,它必须跳过它或删除它。我的问题是由于两个连续的c被删除 builder.Replace(“c”,“”);我应该用什么方法?

样本输入:abaabbcbaccb

输出必须是:aabaaaabbaaccb

3 个答案:

答案 0 :(得分:1)

builder.Replace("a", "aa");
builder.Replace("b", "b");
builder.Replace("bb", "b");
builder.Replace("cc", "~");
builder.Replace("c", "");
builder.Replace("~", "cc");

答案 1 :(得分:1)

由于您不需要使用StringBuilder.ReplaceRegex如何:

[^c](c)[^c]

Regular expression visualization

Debuggex Demo

你可以这样使用:

var s = Regex.Replace(input, "[^c](c)[^c]", "");

答案 2 :(得分:0)

消除所有单曲c:

srt = Regex.Replace(str, "(?<=[^c]|^)c(?=[^c]|$)", match => "");