让我告诉你我想做什么......
例如,我将此作为输入
......1.......1.................
我想做的是
.......1111111..................
所以我想用两个填充两个之间的空间......
此外也应该这样做:
......11.....1..................
........11111...................
所以我只想内心......
你可以提供任何C#帮助吗?
答案 0 :(得分:0)
这可以更容易地解决而无需正则表达式:您只想“反转”由第一个和最后一个出现的“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);
答案 1 :(得分:0)
正则表达方式:
使用多线模式:
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);