Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk meningkatkan logik segmentasi dalam golang

Bagaimana untuk meningkatkan logik segmentasi dalam golang

PHPz
Lepaskan: 2024-02-09 10:00:41
ke hadapan
950 orang telah melayarinya

Bagaimana untuk meningkatkan logik segmentasi dalam golang

Dalam golang, membelah rentetan adalah operasi biasa Namun, kadangkala kita mungkin menghadapi beberapa masalah dengan logik belah. Jadi, bagaimana untuk menambah baik logik segmentasi dalam golang? Dalam artikel ini, editor PHP Yuzai akan memperkenalkan anda kepada beberapa petua dan kaedah praktikal untuk membantu anda mengoptimumkan dan meningkatkan logik pembahagian dalam golang, menjadikan kod anda lebih cekap dan boleh dipercayai. Mari kita meneroka bersama-sama!

Kandungan soalan

Pertimbangkan contoh berikut sebagai nilai yang mungkin dalam indeks:

values := [5]string{"32.5ms", "32.5 ms", "32.5%", "32.5 %", "none"}
Salin selepas log masuk

Sila ambil perhatian bahawa nilai asal mungkin mempunyai ruang atau mungkin tidak mempunyai ruang untuk unit ukuran (32.5%, 32.5 %, 32.5 %, dsb.)

Saya perlu mengasingkan nilai titik terapung dan unit ukuran (%, ms, dsb.) daripada nilai asal, kod di bawah memberikan saya hasil yang saya inginkan, tetapi saya ingin tahu jika ada cara yang lebih bersih untuk melakukan Logik yang sama, mungkin tidak memerlukan ungkapan biasa.

package main

import (
    "fmt"
    "regexp"
    "strings"
)

func main() {

    regexFloatNumbers := regexp.MustCompile(`[-]?\d[\d,]*[\.]?[\d{2}]*`)

    values := [5]string{"32.5ms", "32.5 ms", "32.5%", "32.5 %", "none"}

    for _, value := range values {

        if regexFloatNumbers.MatchString(value) {
            floatValue := regexFloatNumbers.FindString(value)
            fmt.Printf("ORIGINAL VALUE: %q\n", value)
            fmt.Printf("UNIT: %q\n", strings.TrimSpace(regexFloatNumbers.Split(value, -1)[1]))
            fmt.Printf("FLOAT VALUE: %v\n\n", floatValue)
        } else {
            fmt.Printf("float value for %v has not being found!", value)
        }

    }

}
Salin selepas log masuk

Penyelesaian

Ekspresi biasa nampaknya sesuai di sini. Secara peribadi, saya akan menggunakan subkumpulan untuk ini, seperti ini (saya juga membersihkan regex anda, yang mempunyai beberapa sintaks yang tidak perlu dan kelihatan seperti salah ejaan [d{2}]*):

regexFloatNumbers := regexp.MustCompile(`(-?\d[\d,]*\.?\d*) *(.*)`)

// ...

floatValue := regexFloatNumbers.FindStringSubmatch(value)
fmt.Printf("ORIGINAL VALUE: %q\n", value)
fmt.Printf("UNIT: %q\n", floatValue[1])
fmt.Printf("FLOAT VALUE: %v\n\n", floatValue[2])
Salin selepas log masuk

//m.sbmmt.com/link/8af0c75579a632c9207e51657de43c7c

Atas ialah kandungan terperinci Bagaimana untuk meningkatkan logik segmentasi dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan