嗨,我有以下字符串:
* lalalalalaal
* 12121212121212
* 36363636363636
* 21454545454545454
列表的每一行均以-"\r\n* "
有一种方法可以在开始时检测到"\r\n* "
符号,并可能将其替换为数字1、2、3,... n。因此,在示例中,如下所示:
1. lalalalalaal
2. 12121212121212
3. 36363636363636
4. 21454545454545454
我想象将需要构建一个数组并运行for循环,但是我不应该从应该开始的地方出发。
答案 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;
}
输出