检测字符串中的换行符并在其前面添加一个字符

时间:2018-12-19 15:47:39

标签: c# string list character

嗨,我有以下字符串:

* lalalalalaal
* 12121212121212
* 36363636363636
* 21454545454545454

列表的每一行均以-"\r\n* "

开头

有一种方法可以在开始时检测到"\r\n* "符号,并可能将其替换为数字1、2、3,... n。因此,在示例中,如下所示:

1. lalalalalaal
2. 12121212121212
3. 36363636363636
4. 21454545454545454

我想象将需要构建一个数组并运行for循环,但是我不应该从应该开始的地方出发。

2 个答案:

答案 0 :(得分:0)

您可以使用Linq和String.Replace来实现它(相信您已经拥有字符串作为OP的第二部分中提到的List)

var result = list.Select((x,index)=> $"{index+1}.{x.Replace("\r\n* ",string.Empty)}");

如果您没有将其作为列表,则可以将字符串拆分为

var result = str.Split(new string[]{Environment.NewLine},StringSplitOptions.RemoveEmptyEntries)
                     .Select((x,index)=> $"{index+1}.{x.Replace("* ",string.Empty)}");

答案 1 :(得分:0)

如果我对您的理解正确,那么您会有一个类似于以下内容的字符串:

<DOCTYPE html>
<head>
</head>
<body>
<h2>Appi Magic</h2>
<h3>Enter Login:</h3>
<input type="text" id="loginPopup">
<button id="myButton">Let go</button>

<script src="buttonScript.js"></script>

</body>
</html>

您想将"\r\n* lalalalalaal\r\n* 12121212121212\r\n* 36363636363636\r\n* 21454545454545454" 替换为"\r\n*",其中每次找到搜索字符串时,数字"\r\n1."都会递增。

如果是这样,可以采用以下一种方法:使用1方法查找要搜索的字符串的位置,保留一个计数器变量,该变量在每次找到搜索词时都会增加,然后使用IndexOf获取要替换的部分之前和之后的子字符串('*'),然后将计数器的值放在它们之间:

Substring

以下是使用您的输入字符串的示例:

static string ReplaceWithIncrementingNumber(string input, string find, string partToReplace)
{
    if (input == null || find == null ||
        partToReplace == null || !find.Contains(partToReplace))
    {
        return input;
    }

    // Get the index of the first occurrence of our 'find' string
    var index = input.IndexOf(find);

    // Track the number of occurrences we've found, to use as a replacement string
    var counter = 1;

    while (index > -1)
    {
        // Get the leading string up to '*', add the counter, then add the trailing string
        input = input.Substring(0, index) +
                find.Replace(partToReplace, $"{counter++}.") +
                input.Substring(index + find.Length);

        // Find the next occurrence of our 'find' string
        index = input.IndexOf(find, index + find.Length);
    }

    return input;
}

输出

enter image description here