2016-02-03 114 views
0

我有以下功能(通过有人在这个论坛中另外一个问题回答):SRSS表达分割字符串不包括特定字符串

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"一些图片,因为它上面的功能设为b eing分裂成两行:

IMAGESYS 
RES01 

我需要避免这种情况,如上述"IMAGESYS RES01"仅仅是一个文件。

+0

是两个单词值总是'IMAGESYS RESXX'?尝试识别文件名中的常见模式。 –

+0

是的,它应该始终是“IMAGESYS RESxx”。 – PnP

回答

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 

UPDATE说明它是如何工作的:

分裂没有什么不同,变化是我们pa将值赋给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 

让我知道,如果这有助于。

+0

太棒了!谢谢,效果很好。这与拆分工作到底有什么关系? – PnP

+0

@PnP,检查我的更新。希望它可以帮助你。如果您在我的简要解释中不了解任何内容,请告诉我。 –