用特殊字符替换所有连续出现的字符

时间:2018-11-01 05:55:45

标签: c#

我已填写空白表格,其中每个空白的长度不一致。我想用特殊代码替换此类库以与业务逻辑保持一致,以下是格式

It is raining ________ in the forest   
The quick _______ dog jumps over ______________ fox

我要重新格式化上面的行,如下所示

It is raining [0] in the forest
The quick [0] dog jumps over [1] fox

如前所述,每个空白的char长度不一致,请确保使用正则表达式或不使用正则表达式在c#中编写可维护的代码

例外

  

有些条目没有任何空格,在这种情况下应该返回   整个段落是

Tim建议的代码非常适合我,Tim的答案如下所示。希望可以帮助某人

    Dictionary<string, string> dctE = new Dictionary<string, string>();
    Dictionary<string, string> dctT = new Dictionary<string, string>();
    string jsonT = string.Empty, jsonH = string.Empty;
    try
    {
        using (StreamReader r = new StreamReader(@"C:\samples\testmongo\testmongo\tamil1.txt"))
        {
            string langs = r.ReadToEnd();
            var lines = langs.Split('\n');
            for (int i = 1; i < lines.Length - 2; i += 2)
            {
                string tml = lines[i].Split(':')[1];
                    Regex regex = new Regex(@"_{2,}");
                    string[] partT = regex.Split(tml);
                    for (int j = 0; j < partT.Length; j++)
                    {
                        tml += partT[j] + "[" + j + "]";
                    }
                //dctE[lines[i].Split(':')[0].Trim()] = lines[i].Split(':')[1].Trim();
                dctT[lines[i - 1].Split(':')[0].Trim()] = tml;// lines[i].Split(':')[1].Trim();
            }

        }
        jsonT = JsonConvert.SerializeObject(dctT);

    }
    catch(Exception eX)
    {
        Console.WriteLine(eX.Message);
    }
    finally
    {
        System.IO.File.WriteAllText(@"C:\samples\testmongo\testmongo\ta_yogs.json", jsonT);
        dctE.Clear();
        dctT.Clear();
    }

1 个答案:

答案 0 :(得分:5)

这是一个有效的脚本。此方法是在两个或更多个下划线(_{2,})上拆分输入字符串。然后,我们迭代字符串组件,并使用编号为for的循环将它们连接在一起成为单个字符串,通过该循环我们可以确定替换占位符应该是什么。

string input = "The quick _______ dog jumps over ______________ fox";
Regex regex = new Regex(@"_{2,}");
string[] parts = regex.Split(input);
string output = "";
for (int i=0; i < parts.Length-1; i++)
{
    output += parts[i] + "[" + i + "]";
}
output += parts[parts.Length-1];
Console.WriteLine(input);
Console.WriteLine(output);

The quick _______ dog jumps over ______________ fox
The quick [0] dog jumps over [1] fox