จะตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell ได้อย่างไร?
ใน PowerShell คุณสามารถใช้วิธีการต่างๆ เช่น มี() วิธีการตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่ ให้เราตรวจสอบวิธีการทั้งหมดพร้อมตัวอย่าง
ในการตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่ คุณสามารถใช้ตัวดำเนินการ -match กับรูปแบบนิพจน์ทั่วไป เช่น [^a-zA-Z0-9] ซึ่งจับคู่อักขระที่ไม่ใช่ตัวอักษรและตัวเลข ตัวอย่างเช่น:
$string = "NewYork@2024"
if ($string -match '[^a-zA-Z0-9]') {
Write-Output "String contains special characters."
} else {
Write-Output "String does not contain special characters."วิธีนี้ระบุอักขระพิเศษภายในสตริงใน PowerShell ได้อย่างมีประสิทธิภาพ
ตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่
ให้เราตรวจสอบวิธีการบางอย่างเพื่อตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่
วิธีที่ 1: การใช้นิพจน์ทั่วไป
นิพจน์ทั่วไป (regex) เป็นวิธีที่มีประสิทธิภาพในการค้นหารูปแบบภายในสตริง PowerShell รองรับ regex ดังนั้นจึงง่ายต่อการตรวจสอบอักขระพิเศษ
นี่คือตัวอย่างที่สมบูรณ์
$string = "NewYork@2024"
if ($string -match '[^a-zA-Z0-9]') {
Write-Output "String contains special characters."
} else {
Write-Output "String does not contain special characters."
}ในตัวอย่างนี้ [^a-zA-Z0-9] คือรูปแบบ regex ที่ตรงกับอักขระใดๆ ที่ไม่ใช่ตัวอักษรหรือตัวเลข ตัวดำเนินการ -match ตรวจสอบว่าสตริงมีอักขระดังกล่าวหรือไม่
ฉันรันสคริปต์ข้างต้น คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง แสดงว่าสตริงมีอักขระพิเศษ
อ่านแยกสตริงด้วย Word ใน PowerShell
วิธีที่ 2: การใช้วิธีการประกอบด้วย
สามารถใช้เมธอด .Contains() ใน PowerShell เพื่อตรวจสอบอักขระเฉพาะได้ แต่ไม่ยืดหยุ่นเท่ากับ regex สำหรับการตรวจสอบอักขระพิเศษหลายตัวพร้อมกัน
นี่คือสคริปต์ PowerShell ที่สมบูรณ์
$string = "Washington#D.C."
$specialChars = "@#$%^&*()"
$containsSpecialChar = $false
foreach ($char in $specialChars.ToCharArray()) {
if ($string.Contains($char)) {
$containsSpecialChar = $true
break
}
}
if ($containsSpecialChar) {
Write-Output "String contains special characters."
} else {
Write-Output "String does not contain special characters."
}ในตัวอย่างนี้ เราวนซ้ำชุดอักขระพิเศษที่กำหนดไว้ล่วงหน้า และตรวจสอบว่ามีอักขระใดอยู่ในสตริงหรือไม่
ที่นี่ คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง ฉันรันสคริปต์ด้านบนโดยใช้รหัส VS
วิธีที่ 3: การใช้ตัวดำเนินการ -like
นี่เป็นอีกวิธีในการตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่
คุณสามารถใช้ตัวดำเนินการ -like ใน PowerShell เพื่อตรวจสอบการจับคู่รูปแบบอย่างง่าย แม้ว่าจะไม่ทรงพลังเท่ากับ regex แต่ก็มีประโยชน์สำหรับการตรวจสอบอย่างรวดเร็ว
นี่คือตัวอย่าง
$string = "SanFrancisco$Bay"
if ($string -like "*[!a-zA-Z0-9]*") {
Write-Output "String contains special characters."
} else {
Write-Output "String does not contain special characters."
}ในที่นี้ *[!a-zA-Z0-9]* คือรูปแบบไวด์การ์ดที่ตรงกับสตริงใดๆ ที่มีอักขระอย่างน้อยหนึ่งตัวที่ไม่ใช่ตัวอักษรหรือตัวเลข
อ่านสตริงแยกตามอักขระแท็บใน PowerShell
วิธีที่ 4: การใช้คลาสอักขระ
PowerShell อนุญาตให้ใช้คลาสอักขระเพื่อระบุอักขระพิเศษ วิธีนี้สามารถอ่านได้ง่ายกว่าและบำรุงรักษาง่ายกว่า
นี่คือตัวอย่างที่สมบูรณ์
$string = "LosAngeles&Hollywood"
$specialChars = [char[]]'@#$%^&*()'
$containsSpecialChar = $false
foreach ($char in $specialChars) {
if ($string.IndexOf($char) -ne -1) {
$containsSpecialChar = $true
break
}
}
if ($containsSpecialChar) {
Write-Output "String contains special characters."
} else {
Write-Output "String does not contain special characters."
}ที่นี่ เราใช้เมธอด IndexOf() เพื่อตรวจสอบว่ามีอักขระพิเศษอยู่ในสตริง PowerShell หรือไม่
ฉันรันสคริปต์ PowerShell ด้านบนแล้ว และคุณจะเห็นผลลัพธ์ด้านล่าง:
บทสรุป
ฉันหวังว่าวิธีการที่อธิบายไว้ข้างต้นจะช่วยคุณตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่ วิธีนิพจน์ทั่วไปส่วนใหญ่จะใช้ในการตรวจสอบสิ่งนี้
อย่างไรก็ตาม คุณยังสามารถใช้วิธีการอื่น เช่น วิธี ประกอบด้วย() หรือคลาสอักขระ เพื่อตรวจสอบว่าสตริงมีอักขระพิเศษใน PowerShell หรือไม่


