下面是我用来从用户ID中取出forename的表达式
即。 "text\[forename] [Surname]"
目前此表达式适用于" "在姓和姓之间。但是,我注意到的是" "可以用"替换。"或" /"或" _"例如。
我遇到的麻烦包括多个" Mid"功能包括所有这些选项。我曾尝试使用"或"," Switch"以及许多其他无效的运营商。
我没有使用数据集,而是使用报表中的参数,即当用户登录报表时,他们的UserID被视为参数。
我错过了一些明显的东西,还是我完全错过了这个标记?
非常感谢任何帮助。
= "Hi " + Mid(Parameters!User.Value, InStr(Parameters!User.Value,"\")+1, (InStr(Parameters!User.Value, " ") - InStr(Parameters!User.Value, "\") - 1)) + "," &
chr(10) & chr(13) &
chr(10) & chr(13) &
"You have access to the Teams listed below. Only data from these teams will be shown in any analysis. Please click above to continue to the Dashboards"
答案 0 :(得分:1)
正则表达式绝对是这样的方式。这是一个如何用正则表达式取出forename的例子:
Dim input As String = Parameters!User.Value
Dim pattern As String = "(?<=\\)[^ ./_]+"
Dim forename As String = Regex.Match(input, pattern).Value
Dim output As String = $"Hi {forename},
You have access to the Teams listed below. Only data from these teams will be shown in any analysis. Please click above to continue to the Dashboards"
VB.NET现在允许使用多行字符串文字,因此不需要使用Chr(10) & Chr(13)
。即使您不使用多行文字,最好根据您的需要使用Environment.NewLine
或vbCrLf
。字符串文字前面的$
使其成为插值字符串,这意味着您可以在字符串中间的{}
括号中插入变量值。如果您不想使用它,您可以像以前一样连接:
Dim output As String = "Hi " & forename &
Environment.NewLine &
Environment.NewLine &
"You have access to the Teams listed below. Only data from these teams will be shown in any analysis. Please click above to continue to the Dashboards"
Regex是一种用于搜索,解析和转换字符串的强大工具。如果您要对数据进行大量工作,那么您将非常值得学习它。
如果您不想使用正则表达式,我建议您使用String.Split
,因为该方法允许您传递任意数量的分隔符。例如,你可以这样做:
Dim input As String = Parameters!User.Value
Dim parts() As String = input.Split("\"c, " "c, "."c, "/"c, "_"c)
Dim forename As String = If(parts.Length >= 2, parts(1), Nothing)