SRSS Expression分割字符串,不包括特定字符串

时间:2016-02-03 15:33:00

标签: sql ssrs-2008 reporting

我有以下功能(在另一个问题上由此论坛上的某人回答):

Public Function mySplit(ByVal my_field As String) As String
    Dim result As String = ""       
    If my_field is Nothing or my_field = "" Then
        Return result
    End If
    Dim TestArray() As String = my_field.Split(New Char() {" "c})
    Dim word as String
    Dim counter as Integer = 0      
    For Each word In TestArray
        counter = counter +1
        If counter = TestArray.Length Then
            result = result + word
        Else
                result = result + word + vbCrLf 
        End if
    Next
    Return result

End Function

这可以收集一些单词:

"IMAGE01 IMAGE02 IMAGE03"并将其显示在报告中:

IMAGE01
IMAGE02
IMAGE03

但是,我有一些名为"IMAGESYS RES01"的图像,因为上述功能被分成两行:

IMAGESYS
RES01

我需要避免这种情况,因为上面的"IMAGESYS RES01"只是一个文件。

1 个答案:

答案 0 :(得分:1)

如果它始终遵循模式IMAGESYS RESXX,则该表达式应该起作用:

=REPLACE(Code.mySplit(REPLACE(Fields!YourField.Value,"S R","S_R")),"_"," ")

使用此示例IMAGE01 IMAGE02 IMAGE03 IMAGESYS RES01 IMAGESYS RES02,它应返回:

IMAGE01
IMAGE02
IMAGE03
IMAGESYS RES01
IMAGESYS RES02

更新有关其工作原理的说明:

拆分没有什么不同,改变是我们将值传递给mySplit函数的方式。 REPLACE(Fields!YourField.Value,"S R","S_R")会改变您的字段并将其传递给mySplit函数:

IMAGE01 IMAGE02 IMAGE03 IMAGESYS_RES01 IMAGESYS_RES02

mySplit函数将根据上面传递的参数返回以下字符串。

IMAGE01
IMAGE02
IMAGE03
IMAGESYS_RES01
IMAGESYS_RES02

一旦函数返回上面的字符串,外部REPLACE函数会替换_ " "(空格),将字符串保留为:

IMAGE01
IMAGE02
IMAGE03
IMAGESYS RES01
IMAGESYS RES02

如果有帮助,请告诉我。