【发布时间】:2019-07-21 09:30:20
【问题描述】:
我正在分配用户 ID,方法是获取姓氏的前五个字符、名字的前三个字符,然后在该字符串的末尾添加 001。因此,名为 Jo Doe 的人将被分配“DOE__JO_000”作为他的用户 ID。
如果此人的姓名标准在名字中少于三个字符和/或在姓氏中少于五个字符,我会添加一个“_”直到它满足该条件。
现在我可以找到匹配项并创建命名标准,但如果有多个匹配项,它只会在有多个匹配项时增加一次。
我需要检查分配给用户的 ID 是否已存在于项目中,如果存在则将新 ID 加 1?
例如,如果有一个名为 Jo Doe 的用户在项目中已经分配了 ID“DOE__JO_000”,那么我想给另一个 Jo Doe 加 1,给他 ID“DOE__JO_001”。但是,如果有第三个 Jo Doe,那么它将增加到“DOE__JO_002”。
这是我的代码:
$exIDArray = @("DOE__JO_000","DOE_JO_001","SMITHNAN000","ZAHN_THO000")
$lastFive = "Doe";
$lnFive = $lastFive.toUpper()
$l = $lastFive.length
do {
$lnFive += "_";
$l++;
} while ($l -lt 5)
$firstThree = "Jo";
$fnTHree = $firstThree.toUpper()
$f = $firstThree.length
do {
$fnThree += "_";
$f++;
} while ($f -lt 3)
$numID = "00"
$increment = 0;
$skyID = $lnFive + $fnThree + $numID + $increment
$exIDArray | foreach {
if ($skyID -in $_)
{
$increment++;
}
}
$skyID = $lnFive + $fnThree + $numID + $increment
Write-Output $skyID
【问题讨论】:
-
John Smith 不是
johsmith001而不是johnsmith001? -
是的,简单的错字,与我的问题无关。
-
您能否更新帖子以使代码反映问题(反之亦然)?问题描述了一种命名方案,代码实现相反
-
抱歉,发帖前应该已经阅读了所有内容。
标签: arrays powershell contains