删除字符串字面值的格式

本文关键字:格式 字面值 字符串 删除 | 更新日期: 2023-09-27 18:06:34

给定c#代码:

string foo = @"
           abcde
           fghijk";

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

目前代码

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

可以工作,但是第2行和第3行之间的空白仍然保留。

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

谢谢。

删除字符串字面值的格式

我假设你想保留多行,如果不是,我会选择CAbbott的答案。

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)。

您可以使用正则表达式:

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

这个怎么样?

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();
}

如果空格都是空格,则可以使用

foo.Replace(" ", "");

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

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

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

试试这样:

string test = @"
            abcde
            fghijk";    

EDIT:添加只过滤空格的代码。

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

产生以下内容:abcdefghijk

我写了一些类似于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();

我希望这能帮助到一些人