【问题标题】:SRSS Expression to split strings excluding specific stringSSRS 表达式拆分字符串,不包括特定字符串
【发布时间】:2016-02-03 15:33:00
【问题描述】:

我有以下功能(本论坛有人在另一个问题中回答):

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" 只是一个文件。

【问题讨论】:

  • is 两个字的值总是IMAGESYS RESXX?尝试识别文件名中的常见模式。
  • 是的,此时它应该始终是“IMAGESYS RESxx”。

标签: sql ssrs-2008 reporting


【解决方案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

如果这有帮助,请告诉我。

【讨论】:

  • 太棒了!谢谢,很好用。拆分的具体情况如何?
  • @PnP,检查我的更新。希望它可以帮助你。如果您对我的简短解释有任何不明白之处,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2022-08-21
  • 2020-10-22
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
相关资源
最近更新 更多