仅在特定区域中删除空格

时间:2013-11-19 01:07:52

标签: c# string

我有一个这样的字符串:

  

这是我的文字更多文字文字文字,这里有一些特别的东西[S p e c i a l string]更随意的文字

我想要做的是删除之外的空格,所以最终的结果是:

  

thisismytextmoretexttexttextandherecomessomethingspecial [S p​​ e c i a l string] morerandomtext

现在我正在移除空间

myString.Replace(" ", String.Empty);

但是,有没有办法只选择所需的部分?

3 个答案:

答案 0 :(得分:3)

您可以使用Regex

var myText = @"this is my text more text texttext and here comes something special [S p e c i a l string] more random text";
var pattern = @"\s+(?![^\[]*\])";
var output = new Regex(pattern).Replace(myText, "");

输出将保持:

thisismytextmoretexttexttextandherecomessomethingspecial[S p e c i a l string]morerandomtext

答案 1 :(得分:1)

这样的事情怎么样:

var result = string.Join("\"",
               test.Split('\"')
                   .Select((s, i) => i%2 == 1 ? s : s.Replace(" ", string.Empty)));

它用双引号拆分字符串,并为替换操作选择每个备用拆分项 - 然后再将它们连接起来。

答案 2 :(得分:0)

你可以做点什么

stringbuilder sb = new stringbuilder();
bool should_remove = true;

foreach (var c in my_string) {
    if (c == your_start_special_char)
        should_remove = false;
    else if (c == your_end_special_char)
        should_remove = true;   
    else if (c != ' ')
       sb.append(c);
}

请注意大写和语法...不要在VS atm ...

另一个选择是根据你的特殊区域拼接它,并从常规区域中删除空格......