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

วิธีแยกสตริงระหว่างวงเล็บใน PowerShell


วันนี้ ฉันกำลังทำงานกับสตริงใน PowerShell ซึ่งฉันต้องการแยกสตริงระหว่างวงเล็บ ฉันลองวิธีการต่างๆ ในบทช่วยสอนนี้ ฉันจะแสดงวิธีแยกสตริงระหว่างวงเล็บใน PowerShell โดยใช้วิธีการต่างๆ

หากต้องการแยกสตริงระหว่างวงเล็บใน PowerShell คุณสามารถใช้นิพจน์ทั่วไปได้ ตัวอย่างเช่น หากต้องการแยกรหัสพื้นที่จากหมายเลขโทรศัพท์ เช่น (123) 456-7890 คุณสามารถใช้รูปแบบ \((\d{3})\) พร้อมด้วยตัวดำเนินการ -match นี่คือสคริปต์ตัวอย่าง:

$phoneNumbers = @("(212) 555-1234", "(415) 555-5678", "(305) 555-9012")
$areaCodes = foreach ($number in $phoneNumbers) {
    if ($number -match "\((\d{3})\)") { $matches[1] }
}
Write-Output $areaCodes

รหัสนี้จะรวบรวมรหัสพื้นที่ที่อยู่ในวงเล็บ

โดยเฉพาะอย่างยิ่ง ฉันจะแสดงสามวิธีในการแยกสตริงระหว่างวงเล็บใน PowerShell

วิธีที่ 1: การใช้นิพจน์ทั่วไป (Regex)

ใน PowerShell คุณสามารถใช้นิพจน์ทั่วไปเพื่อจัดการสตริงและรูปแบบการเดินขบวนได้ ตอนนี้ ฉันจะแสดงตัวอย่างวิธีแยกสตริงระหว่างวงเล็บโดยใช้ regex

ตัวอย่างที่ 1: แยกรหัสพื้นที่ออกจากหมายเลขโทรศัพท์

สมมติว่าคุณมีรายการหมายเลขโทรศัพท์ในรูปแบบ (123) 456-7890 และต้องการแยกรหัสพื้นที่

นี่คือสคริปต์ฉบับเต็ม

$phoneNumbers = @(
    "(212) 555-1234",
    "(415) 555-5678",
    "(305) 555-9012"
)

$areaCodes = foreach ($number in $phoneNumbers) {
    if ($number -match "\((\d{3})\)") {
        $matches[1]
    }
}

Write-Output $areaCodes

ในตัวอย่างนี้ รูปแบบ regex \((\d{3})\) ใช้เพื่อจับคู่ตัวเลข 3 หลักที่อยู่ในวงเล็บ ตัวดำเนินการ -match ตรวจสอบว่าสตริงตรงกับรูปแบบหรือไม่ และ $matches[1] จะแยกกลุ่มแรกที่บันทึกไว้ ซึ่งเป็นรหัสพื้นที่

อ่านแทนที่อักขระพิเศษในสตริงใน PowerShell

ตัวอย่างที่ 2: แยกรหัสไปรษณีย์ออกจากที่อยู่

พิจารณารายการที่อยู่ซึ่งมีรหัสไปรษณีย์อยู่ในวงเล็บ ตัวอย่างเช่น 123 Main St, Springfield, IL (62704) ต่อไปนี้เป็นสคริปต์สำหรับแยกรหัสไปรษณีย์จากที่อยู่นี้

$addresses = @(
    "123 Main St, Springfield, IL (62704)",
    "456 Elm St, Seattle, WA (98101)",
    "789 Oak St, Miami, FL (33101)"
)

$zipCodes = foreach ($address in $addresses) {
    if ($address -match "\((\d{5})\)") {
        $matches[1]
    }
}

Write-Output $zipCodes

ในที่นี้ รูปแบบ regex \((\d{5})\) ใช้เพื่อจับคู่ตัวเลขห้าหลักที่อยู่ในวงเล็บ จากนั้นรหัสไปรษณีย์ที่บันทึกไว้จะถูกส่งออก

วิธีที่ 2: การใช้วิธีสตริง

ให้ฉันบอกคุณอีกวิธีหนึ่ง

คุณสามารถใช้วิธีสตริงของ PowerShell เพื่อค้นหาตำแหน่งของวงเล็บและแยกสตริงย่อยระหว่างวงเล็บเหล่านั้นได้

ให้เราเข้าใจด้วยตัวอย่าง

ตัวอย่างที่ 3: แยกชื่อเมืองออกจากสตริง

สมมติว่าคุณมีรายการสตริงที่ชื่อเมืองอยู่ในวงเล็บ เช่น เมืองหลวงของเท็กซัสคือ (ออสติน) จากนั้น คุณสามารถเขียนสคริปต์ด้านล่างเพื่อรับสตริงระหว่างวงเล็บใน PowerShell

$statements = @(
    "The capital of Texas is (Austin)",
    "The capital of California is (Sacramento)",
    "The capital of New York is (Albany)"
)

$cityNames = foreach ($statement in $statements) {
    $startIndex = $statement.IndexOf('(') + 1
    $endIndex = $statement.IndexOf(')')
    $statement.Substring($startIndex, $endIndex - $startIndex)
}

Write-Output $cityNames

ในตัวอย่างนี้ เราใช้วิธี IndexOf เพื่อค้นหาตำแหน่งของวงเล็บเปิดและปิด จากนั้นจะใช้วิธี Substring เพื่อแยกชื่อเมือง

วิธีที่ 3: การใช้ .NET Framework

ตอนนี้ ฉันจะแสดงให้คุณเห็นวิธีที่สาม ซึ่งส่วนใหญ่จะใช้ได้หากคุณทำงานกับการดำเนินการสตริงที่ซับซ้อน

คุณสามารถใช้ .NET Framework สำหรับการจัดการสตริงที่ซับซ้อนมากขึ้น คลาส System.Text.RegularExpressions.Regex มีฟังก์ชันเพิ่มเติม

ตัวอย่างที่ 4: แยกคำย่อของรัฐออกจากประโยค

พิจารณารายการประโยคที่มีตัวย่อของรัฐอยู่ในวงเล็บ เช่น ฉันไปเที่ยว (นิวยอร์ก) เมื่อฤดูร้อนที่แล้ว จากนั้น คุณสามารถใช้สคริปต์ PowerShell ด้านล่างได้

$sentences = @(
    "I visited (NY) last summer",
    "The conference was held in (CA)",
    "They moved to (TX) last year"
)

$stateAbbreviations = foreach ($sentence in $sentences) {
    [System.Text.RegularExpressions.Regex]::Match($sentence, "\((\w{2})\)").Groups[1].Value
}

Write-Output $stateAbbreviations

ในตัวอย่างนี้ คลาส System.Text.RegularExpressions.Regex ใช้เพื่อจับคู่ตัวย่อสถานะสองตัวอักษรที่อยู่ในวงเล็บ คุณสมบัติ Groups[1].Value แยกสตริงย่อยที่ตรงกัน

บทสรุป

PowerShell มีวิธีการต่างๆ สำหรับ การแยกสตริงระหว่างวงเล็บ ด้านล่างนี้เป็นตัวอย่างที่สมบูรณ์ของสามวิธีที่ฉันได้อธิบายในตัวอย่างนี้

  • การใช้นิพจน์ทั่วไป
  • การใช้วิธีสตริง
  • การใช้. NET Framework

ฉันหวังว่านี่จะช่วยคุณได้ หากคุณยังคงมีคำถามใด ๆ โปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง

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