2016-11-15 68 views
0

刪除空行我有一個具有多個回車,例如我的SSRS報表中的字段:從字符串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 

我非常感謝這方面的幫助。

謝謝!

+0

我認爲你可能會陷入一個全部或沒有的情況。是否有一個共同的字符結束或開始下面一行查找和插入旁邊的回車? – BishNaboB

+0

不,沒有普通字符,它是人們可以自由輸入的字段,所以它可能或不可能有回車,更不用說常見的前/後字符了。 – jenhil34

+0

如果用空字符串替換所有雙回車符,該怎麼辦? – Kidiskidvogingogin

回答

0

我認爲你的問題是多行返回馬車/新行字符可能出現在每一行,而你的預期結果是劃分每一行只有一個返回馬車或新行字符。

我認爲可以避免使用正則表達式替換方法(是的,你可以在SSRS中使用正則表達式)。

如果您確定您的源使用回車就可以使用生成的新行:

=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來確定行結束,相應地替換到您的環境。

UPDATE:

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

讓我知道,如果這有助於。

+0

感謝您的建議,我嘗試了兩種方式,都沒有改變這個領域。該公式沒有錯誤或任何東西,顯示只是保持不變。 – jenhil34

+0

@ jenhil34,我很確定這個表達能夠工作,問題是我們不知道用於在數據中產生新行的字符。我已經更新了這個表達式,試試看。如果不起作用,請檢查空行是否由多個空格造成,而不是使用回車或換行符。 –

+0

你真了不起,就像魅力一樣工作! – jenhil34

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)