2015-11-30 214 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? 

讓我知道這可以幫助你。

相關問題