Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara mengekstrak nombor daripada rentetan dalam bahasa Go

Cara mengekstrak nombor daripada rentetan dalam bahasa Go

王林
王林asal
2023-07-12 13:18:073343semak imbas

Cara mengekstrak nombor daripada rentetan dalam bahasa Go

Dalam bahasa Go, kita selalunya perlu mengekstrak bahagian nombor daripada rentetan. Sebagai contoh, kita mungkin perlu mengekstrak bahagian berangka rentetan yang mengandungi nombor telefon atau mengekstrak nombor harga daripada rentetan yang mengandungi maklumat harga. Artikel ini akan memperkenalkan beberapa kaedah biasa untuk mencapai matlamat ini.

Kaedah 1: Gunakan ungkapan biasa

Bahasa Go menyediakan perpustakaan ungkapan biasa terbina dalam regexp, yang boleh kita gunakan untuk mengekstrak bahagian berangka rentetan. Berikut ialah contoh kod: regexp,我们可以使用它来提取字符串中的数字部分。下面是一个示例代码:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "ABC1234DEF5678GHI"

    re := regexp.MustCompile("[0-9]+")
    nums := re.FindAllString(str, -1)

    fmt.Println(nums)
}

运行以上代码,输出结果为:[1234 5678]

在上面的代码中,我们使用了正则表达式[0-9]+来匹配字符串中的数字部分。函数FindAllString返回所有匹配的字符串。第二个参数-1表示返回所有匹配,而不是只返回第一个匹配。最后,我们打印出了提取出的数字部分。

方法二:使用strconv

Go语言的strconv包提供了一系列用于转换字符串和各种数字类型的函数。我们可以使用这些函数来提取字符串中的数字。

以下是一个示例代码:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    str := "ABC1234DEF5678GHI"

    nums := make([]int, 0)
    num := ""
    for _, char := range str {
        if char >= '0' && char <= '9' {
            num += string(char)
        } else if num != "" {
            n, _ := strconv.Atoi(num)
            nums = append(nums, n)
            num = ""
        }
    }

    fmt.Println(nums)
}

运行以上代码,输出结果为:[1234 5678]

在上面的代码中,我们遍历了字符串中的每个字符,并使用Atoi函数将提取出的数字字符串转换为整数。最后,我们打印出了提取出的数字部分。

方法三:手动解析字符串

如果字符串中的数字部分具有一定的规律,我们也可以手动解析字符串来提取数字。以下是一个示例代码:

package main

import "fmt"

func main() {
    str := "ABC1234DEF5678GHI"

    nums := make([]int, 0)
    num := 0
    for _, char := range str {
        if char >= '0' && char <= '9' {
            num = num*10 + int(char-'0')
        } else if num != 0 {
            nums = append(nums, num)
            num = 0
        }
    }

    fmt.Println(nums)
}

运行以上代码,输出结果为:[1234 5678]

在上面的代码中,我们遍历了字符串中的每个字符,并使用当前字符的ASCII码减去字符'0'rrreee

Jalankan kod di atas, hasil output ialah: [1234 5678].

Dalam kod di atas, kami menggunakan ungkapan biasa [0-9]+ untuk memadankan bahagian angka rentetan. Fungsi FindAllString mengembalikan semua rentetan yang sepadan. Parameter kedua -1 bermaksud mengembalikan semua padanan dan bukannya padanan pertama sahaja. Akhirnya, kami mencetak bahagian nombor yang diekstrak. 🎜🎜Kaedah 2: Gunakan pakej strconv 🎜🎜Pakej strconv bahasa Go menyediakan satu siri fungsi untuk menukar rentetan dan pelbagai jenis angka. Kita boleh menggunakan fungsi ini untuk mengekstrak nombor daripada rentetan. 🎜🎜Berikut ialah contoh kod: 🎜rrreee🎜Jalankan kod di atas, hasil output ialah: [1234 5678]. 🎜🎜Dalam kod di atas, kami mengulangi setiap aksara dalam rentetan dan menggunakan fungsi Atoi untuk menukar rentetan angka yang diekstrak kepada integer. Akhirnya, kami mencetak bahagian nombor yang diekstrak. 🎜🎜Kaedah 3: Menghuraikan rentetan secara manual🎜🎜Jika bahagian nombor dalam rentetan mempunyai corak tertentu, kita juga boleh menghuraikan rentetan secara manual untuk mengekstrak nombor. Berikut ialah contoh kod: 🎜rrreee🎜Jalankan kod di atas, hasil output ialah: [1234 5678]. 🎜🎜Dalam kod di atas, kami mengulangi setiap aksara dalam rentetan dan menggunakan kod ASCII aksara semasa tolak kod ASCII aksara '0' untuk mendapatkan nombor yang sepadan. Dengan sentiasa mendarab nombor semasa dengan 10 dan menambah nombor baru, kita mendapat nombor akhir. Akhirnya, kami mencetak bahagian nombor yang diekstrak. 🎜🎜Melalui pengenalan di atas, kita dapat melihat bahawa bahasa Go menyediakan pelbagai kaedah untuk mengekstrak bahagian berangka rentetan. Kita boleh memilih kaedah yang sesuai berdasarkan keperluan tertentu. Tidak kira kaedah yang kami pilih, kami boleh mengekstrak bahagian berangka rentetan dengan tepat, yang memudahkan pemprosesan kami yang seterusnya. 🎜

Atas ialah kandungan terperinci Cara mengekstrak nombor daripada rentetan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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