让我告诉你我想做什么...
例如,我将此作为输入
......1.......1.................
我想做的是
.......1111111..................
所以我想用一个来填充两个之间的空间......
这也应该能够做到:
......11.....1..................
........11111...................
所以我只想要里面...
您可以提供任何 C# 帮助吗?
这可以在不需要正则表达式的情况下更容易地解决:您只想“反转”由第一次和最后一次出现“1”分隔的字符串区域。
这是一个示例解决方案:
string input = "..........1............1...";
int start = input.IndexOf('1');
int end = input.LastIndexOf('1');
char[] content = input.ToCharArray();
for (int i = start; i <= end; i++)
{
content[i] = content[i] == '1' ? '.' : '1'; //invert
}
string output = new string(content);
正则表达式方式:
多行模式:
pattern: (?>(?<=^\.*)|\G)1(?=1*(\.))|\G(?<!^)\.(?=\.*(1))
replacement: $1$2
例子:
string pattern = @"(?>(?<=^\.*)|\G)1(?=1*(\.))|\G(?<!^)\.(?=\.*(1))";
string input = @"......1.......1.................
......11.....1..................
......11111111..................";
string replacement = "$1$2";
Regex rgx = new Regex(pattern, RegexOptions.Multiline);
string result = rgx.Replace(input, replacement);