如何在Golang中检测非GSM字符?

问题描述 投票:0回答:1

我有一个代码可以使用 pdutext.GSM7 或 pdutext.UCS2 确定文本参数,如下所示:

sm, err := smpp_transmitter.Submit(&smpp.ShortMessage{
        Src:      data_map[`sender_masking`],
        Dst:      data_map[`msisdn`],
        Text:     pdutext.GSM7(data_map[`sms`]),
        Register: pdufield.NoDeliveryReceipt,
})

我的目标是检测data_map[

sms
]是否包含非GSM字符,它将使用pdutext.UCS2,否则将使用pdutext.GSM7。我通过列出条件中的所有字符来找到中间解决方案。但我相信会有有效的方法来做到这一点

go sms gsm
1个回答
0
投票

我认为你可以使用正则表达式。可能是这样的:

func isGSM7(s string) bool {
    // Define a regex pattern for GSM 7-bit characters
    gsm7Pattern := "^[A-Za-z0-9@£$¥èéùìòÇØøÅå_ÆæßÉ!\"#%&'()*+,-./:;<=>?¡ÄÖÑܧ¿äöñüà^{}\\[~\\]|\\€]*$"
    
    matched, _ := regexp.MatchString(gsm7Pattern, s)
    return matched
}
© www.soinside.com 2019 - 2024. All rights reserved.