删除字符串文字的格式

时间:2011-08-25 15:35:17

标签: c# string formatting

给出c#代码:

string foo = @"
           abcde
           fghijk";

我正在尝试删除所有格式,包括行之间的空格。

到目前为止代码

foo = foo.Replace("\n","").Replace("\r", "");

但第2行和第3行之间的空白仍然有效。

我假设正则表达式是唯一的解决方案吗?

感谢。

7 个答案:

答案 0 :(得分:4)

我假设你想保留多行,如果没有,我会选择CAbbottanswer

var fooNoWhiteSpace = string.Join(
    Environment.NewLine,
    foo.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
       .Select(fooline => fooline.Trim())
);
  1. 这是什么将字符串拆分为行(foo.Split),
  2. 从每行的开头和结尾修剪空白(.Select(fooline => fooline.Trim())),
  3. 然后将它们组合在一起,并在中间使用新行(string.Join)。

答案 1 :(得分:3)

您可以使用正则表达式:

foo = Regex.Replace(foo, @"\s+", "");

答案 2 :(得分:1)

这个怎么样?

string input = @" 
           abcde 
           fghijk"; 
string output = "";
string[] parts = input.Split('\n');

foreach (var part in parts)
{
    // If you want everything on one line... else just + "\n" to it
    output += part.Trim();
}

这应该删除所有内容。

答案 3 :(得分:0)

如果空格是所有空格,则可以使用

foo.Replace(" ", "");

对于其中可能存在的任何其他空格,请执行相同操作。示例:

foo.Replace("\t", "");

答案 4 :(得分:0)

只需添加一个Replace(" ", "")处理字符串文字,这意味着所有空格都是字符串的一部分。

答案 5 :(得分:0)

尝试这样的事情:

string test = @"
            abcde
            fghijk";    

编辑:添加代码仅过滤掉空格。

string newString = new string(test.Where(c => Char.IsWhiteSpace(c) == false).ToArray());

产生以下内容:abcdefghijk

答案 6 :(得分:0)

我写了类似于George Duckett的东西,但是把我的逻辑放到字符串扩展方法中,以便其他人更容易阅读/消费:

public static class Extensions
{
    public static string RemoveTabbing(this string fmt)
    {
        return string.Join(
            System.Environment.NewLine,
            fmt.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                .Select(fooline => fooline.Trim()));
    }
}

你可以这样称呼它:

string foo = @"
       abcde
       fghijk".RemoveTabbing();

我希望能帮到某人