2015-11-30 155 views
1

我想一个字段转换在SSRS报告句首字母大写如:SSRS句首字母大写与正则表达式

一些测试句子。第二句。

应该转换为:

一些测试句子。第二句话。

我目前在尝试此使用正则表达式:

=System.Text.RegularExpressions.Regex.Replace(
IIf(IsNothing(Fields!Title.Value), "", LCase(Fields!Title.Value)), 
"(^[a-z])|\.\s+(.)", 
UCase("$1") 
) 

以上rejex失败。看来部分:UCase("$1")不起作用。我得到的是整个小写字符串。

+0

在SSRS中,似乎(“$ 1”)的大写和小写都以相同的方式显示。所以UCase(“$ 1”)将不起作用。 –

+1

尝试用'“(\ w)([^。?!] + [。?!] \ s替换'”(^ [az])| \。\ s +(。)“,UCase(”$ 1“)' *)“,m => UCase(m.Groups [1] .Value)+ LCase(m.Groups [2] .Value)' - 或类似的东西。 –

+0

@stribizhev - 我收到错误[BC30451],指出'm'未被声明 – Carel

回答

2

正如在评论中提到的那样,SSRS将不会使用“$ 1”标识符,因为它会将其作为文字字符串。

至于解决办法,我建议您使用此自定义代码:

转到报表属性/代码,并把这个代码:

Function ProperCase(InputString as String) As String 
     Dim i as Integer 
     If InputString <> "" Then 
      Mid(InputString , 1, 1) = UCase(Mid(InputString , 1, 1)) 
      For i = 1 To Len(InputString) - 1 
       If Mid(InputString, i, 2) = "." + " " Then 
        Mid(InputString, i + 2, 1) = UCase(Mid(InputString, i + 2, 1)) 
       End If 
      Next 
      Return InputString 
     End If 
End Function 

要使用它调用它,在你的文本框,如下所示:

=Code.ProperCase(LCase(Fields!Title.Value)) 

我测试过这个字符串:

some test sentence. second Sentence. SHOULD THIS BE CAPITALIZED? 

,它返回:

Some test sentence. Second Sentence. Should this be capitalized? 

让我知道这可以帮助你。

相关问题