我遇到一个问题,其中字段以'## ABC'的形式存储在我们的数据库中,数字和字母之间没有空格。该数字可以是1到100之间的任何数字,并且字母可以是任何组合,因此开头字母或数字长度之间的不一致。
我正在尝试找到一种在数字和字母之间插入空格的方法。
例如,“ 1DRM”将转换为“ 1 DRM” '35PLT'将转换为'35 PLT'
有人知道实现此目标的方法吗?
答案 0 :(得分:1)
不幸的是,没有内置函数可以做到这一点。
幸运的是,Visual Studio允许您创建函数来帮助解决此类问题。
您可以通过转到“报表属性”并转到“自定义代码”标签来添加Visual BASIC自定义代码。
您只需要编写一些代码就可以逐字符地进行一些文本输入。如果在下一个字符中找到数字和字母,请添加一个空格。
这是我在几分钟内写的似乎有效的内容:
Function SpaceNumberLetter(ByVal Text1 AS String) AS String
DIM F AS INTEGER
IF LEN(Text1) < 2 THEN GOTO EndFunction
F = 1
CheckCharacter:
IF ASC(MID(Text1, F, 1)) >= 48 AND ASC(MID(Text1, F, 1)) <=57 AND ASC(MID(Text1, F + 1, 1)) >= 65 AND ASC(MID(Text1, F + 1, 1)) <=90 THEN Text1 = LEFT(Text1, F) + " " + MID(Text1, F+1, LEN(Text1))
F = F + 1
IF F < LEN(Text1) THEN GOTO CheckCharacter
EndFunction:
SpaceNumberLetter = Text1
End Function
然后您从文本框表达式中调用函数:
=CODE.SpaceNumberLetter("56EF78GH12AB34CD")
我使用文本进行测试,但是您会使用您的字段。
答案 1 :(得分:1)
您可以使用下面的正则表达式(假设您的模式是数字字符)
= System.Text.RegularExpressions.Regex.Replace( Fields!txt.Value, "(\d)(\D)", "$1 $2")