日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lua 区间比较_Lua(模糊查找):判断两个字符串(含中文)是否存在至少一个相同

發布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lua 区间比较_Lua(模糊查找):判断两个字符串(含中文)是否存在至少一个相同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用過Lua的,應該知道lua有一個截取字符串的接口,string.sub(s,i,j),就是截取字符串s,從第i個字符到第j個字符的字串,這里的一個字符是一個字節,對于英文字母還是阿拉伯數學,不管是utf8編碼,還是ansi(GBK)編碼,都是一樣的,而且對于漢字,前者占3個字節,后者占2個字節,當然還有4個字節的漢字,那如何從一個字符串比如"bg%好-+03打@/f"中準確截取出我們需要的漢字呢,這就是我們今天需要解決的問題.

其實,在今天之前,我也不知道怎么做,我是因為要解決一個模糊查找的需求來學習到了這些

首先當前游戲代碼是以utf8編碼格式,因為我們要面向中國玩家,而且很多英語不是非常好,哈哈,所以全寫英文的,玩家就看不懂了,如果ui顯示文字全是英文,下面的就不需要看了

1.字符是由幾個字節組成:(16進制)

[0, 0xc0) 表示這個字符僅由1個字節構成? ? [0,192)

[0xc0, 0xe0) 表示這個字符由2個字節構成? [192,225)

[0xe0, 0xf0) 表示這個字符由3個字節構成? [225,240)

[0xf0, 0xff) 表示這個字符由4個字節構成? [240,255)

2.如何取得字節ASCII碼 :

string.byte(s,i) 或 s:byte(i)

3.我們先寫一個判斷utf8字符byte長度的函數:

4.在Lua中,表(table)是十分重要的一種數據結構,實際上Lua對于復雜數據類型也僅提供了表給我們,我們通過表可以實現我們需要的大部分重要的數據結構,比如數組。我們現在只需要知道有沒有相同的中文字符,其他不關心,所以把字符串變成數據中文字符串的表就好了

我們傳入兩個參數,一個是字符串,一個是用來裝漢字的表

通常來說,漢字范圍從0x4E00到0x9FA5,轉換為UTF-8編碼為11100100 10111000 10000000(228, 184, 128) 到 11101001 10111110 10100101(233, 190, 165)

因此,中文UTF-8編碼用3個字節表示,要遵守格式:1110xxxx 10xxxxxx 10xxxxxx

即第一個字節的取值區間為 [11100000, 11110000) = [0xe0, 0xf0) = [224, 240) 左開右閉

后兩個字節的取值區間為[10000000, 10111111] = [0x80,0xbf] = [128, 191] 開區間

所以我們可以一個字節的去截取,然后計算出byte長度,如果大于3,就截取存入表中

5.寫好算法以后,我們只需傳入不同的字符串,得到不同的表,進行比較就可以了:

我們只比較兩個字符串都含有中文的情況

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的lua 区间比较_Lua(模糊查找):判断两个字符串(含中文)是否存在至少一个相同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。