我有一个这样的字符串:
这是我的文字更多文字文字文字,这里有一些特别的东西[S p e c i a l string]更随意的文字
我想要做的是删除在之外的空格,所以最终的结果是:
thisismytextmoretexttexttextandherecomessomethingspecial [S p e c i a l string] morerandomtext
现在我正在移除空间
myString.Replace(" ", String.Empty);
但是,有没有办法只选择所需的部分?
答案 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 ...
另一个选择是根据你的特殊区域拼接它,并从常规区域中删除空格......