从字符串SSRS中删除空行

时间:2016-11-15 15:05:52

标签: reporting-services expression carriage-return

我的SSRS报告中有一个字段有多个回车符,例如:

 First, get materials



 Next, glue them all together

 Last, let dry for two hours

所有六行都在一个字段中,而不是7行。我知道我可以替换/删除回车,但我真正想要的是能够删除空行。我仍然希望将回车保留在包含文本的行上,如下所示:

 First, get materials
 Next, glue them all together
 Last, let dry for two hours

我非常感谢你提供任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您的问题是每行中可能存在多个回车/换行符,而您的预期结果只是将每行除以一个回车或换行符。

我认为使用Regex替换方法可以避免(是的,你可以在SSRS中使用Regex)。

如果您确定您的来源使用回车生成新行,您可以使用:

=System.Text.RegularExpressions.Regex.Replace(Fields!MultilineText.Value,
"\r\r+",Environment.NewLine) 

否则,如果您的源代码通过新行字符(ascii中的代码10)生成下一行,则应使用:

=System.Text.RegularExpressions.Regex.Replace(Fields!MultilineText.Value,
"\n\n+",Environment.NewLine)

注意大多数Windows系统使用\ r \ n来确定行尾,并根据您的环境进行相应替换。

<强>更新

=System.Text.RegularExpressions.Regex.Replace(Fields!MultilineText.Value,
"\r\n[\r\n]+",Environment.NewLine)

如果有帮助,请告诉我。

答案 1 :(得分:0)

我得到了一个很好的答案,我刚想通了。我的地址2(地址的第二行)并不总是存在于所有行中。所以如果Address2中没有值,我可以使用条件来放入vbCrlf或者放入Nothing。

所以现在,如果没有Address2,每个连接的行很好地堆叠而没有空行。可能可以使用Environment.Newline而不是vbCurliff执行此操作。

=Trim(Fields!IPA_Addr1.Value) & IIF(LEN(Trim(Fields!IPA_Addr2.Value)) > 0, vbCrLf, Nothing) & Trim(Fields!IPA_Addr2.Value) & IIF(LEN(Trim(Fields!IPA_Addr2.Value)) = 0, vbCrlf , Nothing) & Trim(Fields!IPA_City.Value) & ", " & Trim(Fields!IPA_State.Value) & " " & Trim(Fields!IPA_Zip.Value)