需要根据文件扩展名执行逻辑。
输入:var textFields = [phonenumber, phonenumber1, phonenumber2, phonenumber3]
var numArray = [String]()
textFields.forEach {
if let text = $0.text, text.first == "+" {
numArray.append(text)
$0.layer.borderWidth = 0.0 //To reset the textField if it didn't validate earlier
} else {
$0.layer.borderColor = UIColor.red.cgColor
$0.layer.borderWidth = 1.0
}
}
$FileName = "ABC.tar.gz.manifest" or "ABC.tar.gz" or "ABC.zip"
但是问题是某些文件具有双扩展名。 我们如何解决这个问题?
如果扩展名是$EXTZ = ".zip"
$EXTGZ = "tar.gz"
$EXT = $FileName -match "$EXTZ"
$EXT
if ($EXT = 'True') {
Write-Host "$EXTZ"
} elseif ($EXT = 'False') {
Write-Host "$EXTGZ"
}
,则需要打印“ ABC”。
如果文件扩展名是.zip
或.tar.gz
,则需要打印“ XYZ”。
答案 0 :(得分:1)
您可以检查$fileInfo
是否包含扩展名(您在if
中遇到问题,在PowerShell中无法执行=
,而不能执行-eq
) :
$Filename = "ABC.tar.gz.manifest"
$EXTGZ = "tar.gz"
$EXT = $Filename.Contains($EXTGZ)
if($EXT -eq $true)
{
# Do Something
}
答案 1 :(得分:0)
我将使用正则表达式和switch
而不是多个if命令
## Q:\Test\2019\05\27\SO_56322763.ps1
foreach ($FileName in ("ABC.tar.gz.manifest","ABC.tar.gz","ABC.zip","foo.bar")){
"`$FileName is: {0}" -f $FileName
switch -regex ($FileName){
"\.tar\.gz(\.manifest)?$" {"XYZ";Break}
"\.zip$" {"ABC";Break}
default {"anything"}
}
}
示例输出:
> Q:\Test\2019\05\27\SO_56322763.ps1
$FileName is: ABC.tar.gz.manifest
XYZ
$FileName is: ABC.tar.gz
XYZ
$FileName is: ABC.zip
ABC
$FileName is: foo.bar
anything