C# 如何在调用NormalizeWhitespace方法时防止Lambda block语句中出现新行
我有下面的代码C# 如何在调用NormalizeWhitespace方法时防止Lambda block语句中出现新行,c#,roslyn,C#,Roslyn,我有下面的代码 var tree = CSharpSyntaxTree.ParseText( @" Func<string, string> parser = value => { return string.Format(""Hello {0}"", value); }; "); var root = (CompilationUnitSyntax)tree.GetRoot(); var result = root.Norm
var tree = CSharpSyntaxTree.ParseText(
@"
Func<string, string> parser = value =>
{
return string.Format(""Hello {0}"", value);
};
");
var root = (CompilationUnitSyntax)tree.GetRoot();
var result = root.NormalizeWhitespace().GetText().ToString();
var-tree=CSharpSyntaxTree.ParseText(
@"
Func parser=value=>
{
返回string.Format(“Hello{0}”,值);
};
");
var root=(CompilationUnitSyntax)tree.GetRoot();
var result=root.NormalizeWhitespace().GetText().ToString();
在打印输出时,NormalizeWhitespace方法将分号推送到新行。我们有没有办法阻止这一切
此外,是否可以将分号移近大括号
感谢您的帮助。因为字符串文字总是捕获换行符。因此,尝试在字符串结束时结束字符串文字,而不是添加换行符以使括号看起来更漂亮
var tree = CSharpSyntaxTree.ParseText(
// The trailing newline might help keep indentation on the first line correct
@"
Func<string, string> parser = value =>
{
return string.Format(""Hello {0}"", value);
};" // Not this string ends here
);
var root = (CompilationUnitSyntax)tree.GetRoot();
var result = root.NormalizeWhitespace().GetText().ToString();
但是为什么它会在换行后移动分号呢?确实如此。OPs字符串以分号结尾,然后换行。输出的最终文本以两个换行符和一个分号结尾(可能还有另一个换行符,尽管很难说)。我无法测试代码,但如果这是一个有效的解决方案,那么我会感到惊讶……我发现,在Normalize方法中,我们可以像NormalizeWhitespace(“,true”)一样修剪换行符。它现在可以正常工作了。@Deepu,你能更详细地描述一下你的解决方案吗?我也有同样的问题。Thanks@DGreen基于我的expamle root.NormalizeWhitespace(“,true).GetText().ToString()尝试此操作;
var tree = CSharpSyntaxTree.ParseText(
(@"
Func<string, string> parser = value =>
{
return string.Format(""Hello {0}"", value);
};
").Trim()); // This could also be .Trim('\n') to only remove the newlines before and after the text
var root = (CompilationUnitSyntax)tree.GetRoot();
var result = root.NormalizeWhitespace().GetText().ToString();