给定数据库类型字符串 varchar(30)
,我想通过将类型名称大写并将其放在括号中来将其标准化为 SQL Server。期望的结果是 [VARCHAR](30)
.
如何将 $1 转换为大写?该表达式标识类型并添加括号,但不添加 ToUpper()。
PS> "varchar(30)" -replace '^\[*(\w+)\]*(.*)','[$1]$2'
[varchar](30)
最佳答案
使用正则表达式的简化版本:
在PowerShell [Core] v6.1+中:
PSCore> 'varchar(30)' -replace '^\[*\w+\]*', { '[' + $_.Value.ToUpper() + ']' }
[VARCHAR](30)
注意:如果输入中至多有一个[...]
封装,则\[?
和应使用 \]?
。
在Windows PowerShell中:
WinPS> [regex]::Replace('varchar(30)', '^\[*\w+\]*', { param($m) '[' + $m.Value.ToUpper() + ']' })
[VARCHAR](30)
有关背景信息,请参阅this answer .
关于regex - 如何将 -replace 中的捕获字符串更改为结果中的大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937935/