-3

让我告诉你我想做什么...

例如,我将此作为输入

......1.......1.................

我想做的是

.......1111111..................

所以我想用一个来填充两个之间的空间......

这也应该能够做到:

......11.....1..................
........11111...................

所以我只想要里面...

您可以提供任何 C# 帮助吗?

4

2 回答 2

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);
于 2013-08-17T18:51:39.597 回答
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);
于 2013-08-17T19:01:10.343 回答