两个确切字符之间的字符

时间:2013-08-17 18:32:35

标签: c# regex string

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

例如,我将此作为输入

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

我想做的是

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

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

此外也应该这样做:

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

所以我只想内心......

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

2 个答案:

答案 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);