Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengesan Gelung C 'untuk' dan 'semasa' Berakhir dengan Koma Bertitik?

Bagaimanakah Saya Boleh Mengesan Gelung C 'untuk' dan 'semasa' Berakhir dengan Koma Bertitik?

Linda Hamilton
Lepaskan: 2024-12-15 18:09:10
asal
229 orang telah melayarinya

How Can I Reliably Detect C

Mengesan C "untuk" dan "semasa" Gelung dengan Penamatan Separuh Kolon

Padanan C untuk atau gelung sementara yang berakhir dengan separuh -kolon menggunakan ungkapan biasa boleh mencabar. Pendekatan biasa melibatkan penciptaan kumpulan yang dinamakan untuk memadankan subrentetan yang seimbang, memastikan keseluruhan badan gelung terkandung dalam kurungan.

Walau bagaimanapun, kaedah ini goyah apabila badan gelung menyertakan panggilan fungsi, memecahkan keseimbangan. Pendekatan yang dipermudahkan menggunakan fungsi bukan regex boleh mengatasi isu ini.

Fungsi Tersuai untuk Pemadanan Gelung

Fungsi tersuai berikut mengambil rentetan input dan mencari untuk atau gelung while diikuti dengan koma bertindih:

def find_loop_and_semicolon(string):
    pos = string.find('(') + 1
    open_br = 0
    while open_br >= 0:
        char = string[pos]
        if char == '(':
            open_br += 1
        elif char == ')':
            open_br -= 1
        pos += 1
    return pos if open_br == 0 and string[pos] == ';' else -1
Salin selepas log masuk

The fungsi:

  1. Menetapkan pembilang kedudukan pos kepada kedudukan sejurus sebelum pendakap pembukaan gelung.
  2. Memulakan pembilang pendakap terbuka open_br hingga 0.
  3. Lelaran melalui rentetan, bertambah open_br untuk membuka kurungan dan mengurangkannya untuk menutup kurungan.
  4. Apabila open_br kembali kepada 0, kedudukan kurungan penutup tercapai.
  5. Semak sama ada aksara pada kedudukan seterusnya ialah koma bertindih untuk mengesahkan gelung penamatan.
  6. Mengembalikan pos jika kedua-dua syarat dipenuhi atau -1 sebaliknya.

Penggunaan

string = "for (int i = 0; i < 10; doSomethingTo(i));"
result = find_loop_and_semicolon(string)
if result != -1:
    print("Loop found and terminated with a semi-colon.")
else:
    print("No matching loop found.")
Salin selepas log masuk

Kelebihan

  • Kesederhanaan: Fungsinya mudah difahami dan laksanakan.
  • Fleksibiliti: Ia mengendalikan gelung dengan badan yang kompleks, termasuk panggilan fungsi.
  • Tiada Overhed Regex: Mengelakkan potensi overhed dan kerumitan ungkapan biasa.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Gelung C 'untuk' dan 'semasa' Berakhir dengan Koma Bertitik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan