CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN Lua này lấy độ dài chuỗi utf8 và chặn chuỗi và sử dụng... thay thế. Nó được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.
1. LUA lấy độ dài của chuỗi utf8.
Sao chép mã Mã này như sau:
--- Phương pháp lấy độ dài chính xác của chuỗi được mã hóa utf8
-- @param str
-- @trả về số
hàm utfstrlen(str)
len cục bộ = #str;
trái cục bộ = len;
cnt cục bộ = 0;
mảng cục bộ = {0,0xc0,0xe0,0xf0,0xf8,0xfc};
trong khi bên trái ~= 0 làm
tmp cục bộ = chuỗi.byte (chuỗi, -trái);
cục bộ i=#arr;
trong khi arr[i] làm
nếu tmp>=arr[i] thì left=left-i;break;end
i=i-1;
kết thúc
cnt=cnt+1;
kết thúc
trả về cnt;
kết thúc
。
2. Chặn một phần độ dài của chuỗi đã cho và thay thế phần thừa bằng dấu ba chấm "."
Sao chép mã Mã này như sau:
--@tóm tắt Cắt dây và thay đuôi bằng "..."
--@param sName: chuỗi cần cắt
--@return nMaxCount, giới hạn trên của chuỗi, ký tự tiếng Trung là bội số của 2
--@param nShowCount: Hiển thị số ký tự tiếng Anh, ký tự tiếng Trung là bội số của 2, có thể để trống
--@note Triển khai hàm: chặn một phần của chuỗi và thay thế phần còn lại bằng "..."
。
hàm GetShortName(sName,nMaxCount,nShowCount) nếu sName == nil hoặc nMaxCount == nil thì trả về kết thúc cục bộ sStr = sName cục bộ tCode = {} cục bộ tName = {} cục bộ nLenInByte = #sStr cục bộ nWidth = 0 nếu nShowCount == nil thì nShowCount = nMaxCount - 3 kết thúc đối với i = 1,nLenInByte thì thực hiện cục bộ curByte = string.byte(sStr, i) cục bộ byteCount = 0; nếu curByte>0 và curByte<=127 thì byteCount = 1 elseif curByte>=192 và curByte<223 thì byteCount = 2 elseif curByte>=224 và curByte<239 thì byteCount = 3 elseif curByte>=240 và curByte<=247 thì byteCount = 4 end local char = nil if byteCount > 0 then char = string.sub(sStr, i, i+byteCount-1) i = i + byteCount -1 end if byteCount == 1 then nWidth = nWidth + 1 table.insert(tName,char) table.insert(tCode,1) elseif byteCount > 1 then nWidth = nWidth + 2 table.insert(tName,char) table.insert(tCode,2) end end if nWidth > nMaxCount then local _sN = "" local _len = 0 for i=1,#tName thực hiện _sN = _sN .. tName[i] _len = _len + tCode[i] nếu _len >= nShowCount thì ngắt kết thúc kết thúc sName = _sN .. "..." kết thúc trả về sName kết thúc 。
Cuối cùng, bài viết này về việc Lua lấy độ dài chuỗi utf8 và chặn chuỗi và thay thế nó bằng... kết thúc ở đây. Nếu bạn muốn biết thêm về việc Lua lấy độ dài chuỗi utf8 và chặn chuỗi và thay thế nó bằng... Về nội dung, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!