ค้นหาเว็บไซต์

จะตรวจสอบว่าสตริงมีอักขระพิเศษใน 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 หรือไม่

บทความที่เกี่ยวข้อง