Lua(字符串)

Lua字符串基礎

Lua中的字符串是不可變序列,可以包含任意字節數據(包括嵌入的\0)。字符串可以用單引號、雙引號或長括號([[ ]])定義:

str1 = "Hello"
str2 = 'World'
str3 = [[Multi-line
string]]

字符串連接

使用..操作符連接字符串:

msg = "Hello" .. " " .. "World"  -- "Hello World"

字符串長度

通過#操作符獲取字符串長度:

len = #"Lua"  -- 3

字符串常用方法

Lua標準庫提供字符串處理函數(通過string模塊):

-- 大小寫轉換
string.upper("hello")  -- "HELLO"
string.lower("WORLD")  -- "world"-- 查找子串
string.find("Lua is great", "is")  -- 5, 6-- 截取子串
string.sub("Lua", 2, 3)  -- "ua"-- 格式化輸出
string.format("Pi: %.2f", math.pi)  -- "Pi: 3.14"--反轉
reversedString = string.reverse(string)
print("新字符串為",reversedString)--替換
string.gsub("aaaa","a","z",3);    --zzza    3--類型轉換(char 將整型數字轉成字符并連接, byte 轉換字符為整數值(可以指定某個字符,默認第一個字符))
string.char(97,98,99,100)    --abcd
string.byte("ABCD",4)    --68
string.byte("ABCD")    --65--計算字符串長度
string.len("abc")    --3--字符串n個copy
> string.rep("abcd",2)    --abcdabcd

模式匹配

Lua使用輕量級模式匹配(非正則表達式):

-- 匹配數字
for num in string.gmatch("a1b22c", "%d+") doprint(num)  -- 輸出1和22
end-- 替換
string.gsub("hello world", "world", "Lua")  -- "hello Lua"

字符串轉義字符

常見轉義序列:

  • \n 換行
  • \t 制表符
  • \\ 反斜杠
  • \" 雙引號
  • \' 單引號

字符串與數值轉換

num = tonumber("123")  -- 字符串轉數字
str = tostring(123)    -- 數字轉字符串

字符串緩沖區

處理大量字符串拼接時,使用table.concat更高效:

local parts = {}
for i = 1, 100 doparts[i] = "line" .. i
end
local result = table.concat(parts, "\n")

Unicode處理

Lua 5.3+支持UTF-8庫:

utf8.len("中文")  -- 返回2
utf8.offset("a中文b", 3)  -- 返回第3個字符的位置

字符串與表

可以通過string.charstring.byte處理ASCII值:

string.byte("A")  -- 65
string.char(65)   -- "A"

附:(格式字符串轉義碼)

??

  • %c - 接受一個數字, 并將其轉化為ASCII碼表中對應的字符
  • %d, %i - 接受一個數字并將其轉化為有符號的整數格式
  • %o - 接受一個數字并將其轉化為八進制數格式
  • %u - 接受一個數字并將其轉化為無符號整數格式
  • %x - 接受一個數字并將其轉化為十六進制數格式, 使用小寫字母
  • %X - 接受一個數字并將其轉化為十六進制數格式, 使用大寫字母
  • %e - 接受一個數字并將其轉化為科學記數法格式, 使用小寫字母e
  • %E - 接受一個數字并將其轉化為科學記數法格式, 使用大寫字母E
  • %f - 接受一個數字并將其轉化為浮點數格式
  • %g(%G) - 接受一個數字并將其轉化為%e(%E, 對應%G)及%f中較短的一種格式
  • %q - 接受一個字符串并將其轉化為可安全被Lua編譯器讀入的格式
  • %s - 接受一個字符串并按照給定的參數格式化該字符串

為進一步細化格式, 可以在%號后添加參數. 參數將以如下的順序讀入:

  • (1) 符號: 一個+號表示其后的數字轉義符將讓正數顯示正號. 默認情況下只有負數顯示符號.
  • (2) 占位符: 一個0, 在后面指定了字串寬度時占位用. 不填時的默認占位符是空格.
  • (3) 對齊標識: 在指定了字串寬度時, 默認為右對齊, 增加-號可以改為左對齊.
  • (4) 寬度數值
  • (5) 小數位數/字串裁切: 在寬度數值后增加的小數部分n, 若后接f(浮點數轉義符, 如%6.3f)則設定該浮點數的小數只保留n位, 若后接s(字符串轉義符, 如%5.3s)則設定該字符串只顯示前n位.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93024.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型蒸餾(distillation)---從DeepseekR1-1.5B到Qwen-2.5-1.5B蒸餾

目錄 1.1 蒸餾目標 2 環境準備 2.1依賴庫安裝 2.2 硬件要求 2.3 模型與數據集下載 2.3.1 教師模型下載 2.3.2 學生模型下載 2.3.3 數據集準備或下載 3.過程日志 4. 模型加載與配置 4.1 加載教師模型 4.2 加載學生模型 4.3 數據預處理函數 4.4 數據收集器 4.5 定義…

通過redis_exporter監控redis cluster

環境說明: 現在有一套redis cluster,部署是3主機6實例架構部署。需要采集對應的指標,滿足異常監控告警,性能分析所需。 環境準備 以下環境需要提前部署完成。 redis cluser prometheus alertmanager grafna redis_exporter部署 我…

第二十天(正則表達式與功能實際運用)

在程序員一生的工作中,遇到的最多的數據就是字符串字符串里面很有可能有很多的不需要的信息我們需要從中間挑選出我們需要的如果循環去寫,比較簡單的時候問題不大規則多了,你的工作量會成倍上升的為了解決這個問題 ---- 正則表達式正則表達式…

0基礎法考隨手筆記 03(刑訴05 刑事證據與證明+06 強制措施)

1.如何區分書證和電子數據 書面材料是否為書證?→ 看內容是否直接源于案件事實(不是 “記錄別人陳述” 的載體)。 證據清單是否為證據?→ 看誰做的清單(偵查人員做的勘查筆錄是證據,當事人做的目錄不是&…

資產負債表及其數據獲取

文章目錄資產負債表及其數據獲取資產負債表資產負債表在股票投資中的意義AKShare中的資產負債表數據接口(深滬為例)接口描述調用示例總結資產負債表及其數據獲取 資產負債表 資產負債表(Balance Sheet)是反映企業在某一特定日期財…

數據倉庫深度探索系列 | 開篇:開啟數倉建設新征程

數據倉庫深度探索系列 | 開篇:開啟數倉建設新征程 在當今信息技術飛速發展的背景下,企業面臨著數據量的爆炸式增長。企業不僅要高效管理海量數據,還需從中提取關鍵信息以支持復雜決策。數據倉庫已從單純的數據存儲工具,演變為支持…

Linux如何執行系統調用及高效執行系統調用:深入淺出的解析

文章目錄如何執行系統調用及高效執行系統調用:深入淺出的解析一、什么是系統調用?1.1 系統調用的作用1.2 系統調用的分類二、如何執行系統調用?2.1 系統調用的觸發2.2 庫函數與系統調用的關系2.3 系統調用的示例2.4 錯誤處理三、如何高效執行…

基于 XGBoost 與 SHAP 的醫療自動化辦公與可視化系統(上)

摘要 隨著信息技術的飛速發展和醫療健康數據的爆炸式增長,現代醫療機構面臨著日益復雜的數據處理挑戰。醫生和行政人員常常需要花費大量時間在數據提取、整理、分析和報告生成等重復性、事務性的工作上,這不僅降低了工作效率,也限制了醫護人員將更多精力投入到直接的患者護…

基于Kafka實現簡單的延時隊列

生命無罪,健康萬歲,我是laity。 我曾七次鄙視自己的靈魂: 第一次,當它本可進取時,卻故作謙卑; 第二次,當它在空虛時,用愛欲來填充; 第三次,在困難和容易之間&…

OceanBase 4.3.5 解析:DDL性能診斷

背景DDL操作通常耗時較長,特別是涉及補數據流程的DDL語句。在執行過程中,用戶面臨兩個主要痛點:一是無法實時獲取DDL執行進度,難以區分長時間運行是正常現象還是由內部異常導致的停滯;二是執行效率經常低于預期&#x…

幸福網咖訂座點餐小程序的設計與實現

文章目錄前言詳細視頻演示具體實現截圖后端框架SpringBoot微信小程序持久層框架MyBaits成功系統案例:參考代碼數據庫源碼獲取前言 博主介紹:CSDN特邀作者、985高校計算機專業畢業、現任某互聯網大廠高級全棧開發工程師、Gitee/掘金/華為云/阿里云/GitHub等平臺持續…

C語言————練習題冊(答案版)

目錄 每日更新5-10題,感興趣可以訂閱 一.理解函數、操作符、占位符 1.1 歡迎來到C語言的世界 1.2 輸入和輸出 1.3 浮點數的打印 1.4 字符串的打印 1.14 I am iron man 1.5 求和運算 1.6 計算比例 1.7 求商求余 1.8 不同數位上的數字 1.8.1 求個位數 1.8…

haproxy配置詳解

1、haproxy簡介 HAProxy是法國開發者 威利塔羅(Willy Tarreau) 在2000年使用C語言開發的一個開源軟件 是一款具備高并發(萬級以上)、高性能的TCP和HTTP負載均衡器 支持基于cookie的持久性,自動故障切換,支持正則表達式及web狀態統計 企業版網站&#xff…

計網-TCP可靠傳輸

TCP(傳輸控制協議)的可靠傳輸是通過一系列機制保證數據準確、有序、不丟失地到達接收方。以下是TCP可靠傳輸的詳細過程及核心機制:1. 數據分塊與序列號(Seq)分塊:應用層數據被分割成適合傳輸的TCP報文段&am…

數智管理學(三十九)

第三章 數智化對管理理論的沖擊第三節 系統理論與生態化管理的強化系統理論作為理解企業運作與環境互動的重要框架,一直強調企業是一個由多個相互關聯子系統構成的整體,其核心要素包括整體性、開放性、動態性和反饋機制。在傳統管理視角下,這…

哈希表(c語言)

文章目錄哈希表哈希表知識點哈希表概念負載因子哈希表的優缺點哈希沖突哈希函數常見哈希函數處理哈希沖突開放定址法線性探測二次探測鏈地址法哈希表的實現哈希表的核心:HashMap核心函數:從創建到銷毀創建哈希表:hashmap_create()銷毀哈希表:hashmap_des…

【Canvas與旗幟】條紋版大明三辰旗

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十三條紋版大明三辰旗 Draft1</title><style type"text/…

【Java】空指針(NullPointerException)異常深度攻堅:從底層原理到架構級防御,老司機的實戰經驗

寫Java代碼這些年&#xff0c;空指針異常&#xff08;NullPointerException&#xff09;就像甩不掉的影子。線上排查問題時&#xff0c;十次有八次最后定位到的都是某個對象沒處理好null值。但多數人解決問題只停留在加個if (obj ! null)的層面&#xff0c;沒從根本上想過為什么…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 主頁-評論用戶時間占比環形餅狀圖實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解主頁-評論用戶時間占比環形餅狀圖實現 視頻…

Redis面試精講 Day 5:Redis內存管理與過期策略

【Redis面試精講 Day 5】Redis內存管理與過期策略 開篇 歡迎來到"Redis面試精講"系列的第5天&#xff01;今天我們將深入探討Redis內存管理與過期策略&#xff0c;這是面試中經常被問及的核心知識點。對于后端工程師而言&#xff0c;理解Redis如何高效管理內存、處…