Powershell:将字符串的内容与中间的点组合起来,忽略空的
Powershell: combine contents of strings with dots inbetween, ignore empty ones
我们的命名约定由名字、插入和姓氏组成,全部由点分隔。一个例子:
- 堆栈溢出 = Stack.Overflow
- 堆栈流 = Stack.over.flow
这些输出稍后将在脚本中用于创建邮箱、用户帐户等。
我已经通过简单地将所有字符串的值加在一起成功地组合了它们,如下所示:
$Convention = $Firstname+"."+$Insertion+"."+$LastName
这些字符串的值来自 stript 运行时输入的信息(Read-Host "....")
现在,我正在努力使它更具动态性。当然,并不是每个人的名字中都有插入符号。使用给定的示例,$Convention 的当前输出将是“Stack..Overflow”,而不是“Stack.Overflow”。
我的问题是:当 $Insertion 为空时,如何过滤掉额外的点 $Insertion 和 ?这很可能是一些非常简单的东西,但我似乎无法弄清楚它是什么。
在此先感谢您提供的帮助!
氪,
罗伯特
下面的代码将遍历每个 $convention
数组,如果这是一个数组,并测试插入是否为空。如果 $Insertion
变量为空,$i
将删除 $Insertion
变量和额外的 .
。在创建邮箱之前,您需要将其作为测试添加到脚本中。
foreach ($i in $convention){
if($insertion -eq "" -or $insertion -eq $null) {
$i= $Firstname+"."+$LastName
} else {
continue
}
}
我愿意
$Convention = ('{0}.{1}.{2}' -f $Firstname, $Insertion, $LastName) -replace '\.+', '.'
-replace
在第一个参数中使用正则表达式,所以'\.+', '.'
表示用单个点替换1个或多个连续的点。
或者您可以使用正则表达式 \.{2,}
读取 两个或多个连续的点
示例:
$Firstname = 'Robbert'
$Insertion = ''
$LastName = 'Verwaart'
$Convention = ('{0}.{1}.{2}' -f $Firstname, $Insertion, $LastName) -replace '\.+', '.'
输出:
Robbert.Verwaart
我们的命名约定由名字、插入和姓氏组成,全部由点分隔。一个例子:
- 堆栈溢出 = Stack.Overflow
- 堆栈流 = Stack.over.flow
这些输出稍后将在脚本中用于创建邮箱、用户帐户等。
我已经通过简单地将所有字符串的值加在一起成功地组合了它们,如下所示:
$Convention = $Firstname+"."+$Insertion+"."+$LastName
这些字符串的值来自 stript 运行时输入的信息(Read-Host "....")
现在,我正在努力使它更具动态性。当然,并不是每个人的名字中都有插入符号。使用给定的示例,$Convention 的当前输出将是“Stack..Overflow”,而不是“Stack.Overflow”。
我的问题是:当 $Insertion 为空时,如何过滤掉额外的点 $Insertion 和 ?这很可能是一些非常简单的东西,但我似乎无法弄清楚它是什么。
在此先感谢您提供的帮助!
氪, 罗伯特
下面的代码将遍历每个 $convention
数组,如果这是一个数组,并测试插入是否为空。如果 $Insertion
变量为空,$i
将删除 $Insertion
变量和额外的 .
。在创建邮箱之前,您需要将其作为测试添加到脚本中。
foreach ($i in $convention){
if($insertion -eq "" -or $insertion -eq $null) {
$i= $Firstname+"."+$LastName
} else {
continue
}
}
我愿意
$Convention = ('{0}.{1}.{2}' -f $Firstname, $Insertion, $LastName) -replace '\.+', '.'
-replace
在第一个参数中使用正则表达式,所以'\.+', '.'
表示用单个点替换1个或多个连续的点。
或者您可以使用正则表达式 \.{2,}
读取 两个或多个连续的点
示例:
$Firstname = 'Robbert'
$Insertion = ''
$LastName = 'Verwaart'
$Convention = ('{0}.{1}.{2}' -f $Firstname, $Insertion, $LastName) -replace '\.+', '.'
输出:
Robbert.Verwaart