powershell - Powershell - 将字符串中的非英文字母替换为英文字母
问题描述
我正在Powershell中编写一个新脚本,我想问一下是否有人知道将字符串中的所有“非英语”字母替换为英文字母的方法或函数。其原因在于 New-ADUser 功能,其中 AD 只接受 SamAccountName 和 UserPrincipalName 的英文字母。
字符串的示例是
$Name= "TRẦN NGÔ ỬNG HẠNH"
亚洲、欧洲等地区都会有各种非英文字母的名称,因此使用简单的 If-Then Replace 是不够的。
if ($Name= -like "*Ầ*")
{
$Name = $Name.replace('Ầ','A')
}
解决方案
嗨 Daniel Björk 和 vonPryz,
谢谢,你们都回复了,我找到了一个解决方案,我会从建议的链接中找到。我还阅读了有关人名的文章,在这种情况下,用户仍然可以使用他们的原始名称作为显示名称,但由于 Microsoft 很难在 AD 中使用“英文”字符以外的字符,因此我们需要转换他们的名字。
解决方案(这将适用于迄今为止测试的亚洲名称)对于斯堪的纳维亚语,我们仍然必须添加一个 .replace。
function Remove-Diacritics {
param ([String]$src = [String]::Empty)
$normalized = $src.Normalize( [Text.NormalizationForm]::FormD )
($normalized -replace '\p{M}', '')
}
$Name = Remove-Diacritics ("TRẦN NGÔ ỬNG HẠNH")
If ($Name -match "[a-z]"){
Write-host "$Name - OK"
}Else{
Write-host "$Name - Send back"
}
推荐阅读
- jenkins - WindowsError:[错误 183] 当文件已存在时无法创建文件:对于移动文件关键字
- python - strExtension - 允许两种格式
- firebase - Firestore 数据建模以获取用户有权从集合中访问的 x 个未知数量的文档
- mysql - Hibernate 在为我的 sql 生成 ddl 时添加了唯一约束
- android - 导航组件给了我一个奇怪的问题
- excel - 如何有条件地格式化具有多个条件的表格?
- django - 如何在同一行显示多个引导卡
- css - 无论如何,手机的 Svg 文本大小都不会改变
- firebase - 无法从 Firebase Functions 写入 Firestore(几天前同样的代码还在工作)
- git - 无法添加暂存文件