说我有一个字符串
local a = "Hello universe"
Run Code Online (Sandbox Code Playgroud)
我发现子串"宇宙"
a:find("universe")
Run Code Online (Sandbox Code Playgroud)
现在,假设字符串是
local a = "un#verse"
Run Code Online (Sandbox Code Playgroud)
要搜索的字符串是Universe; 但子字符串因单个字符而异.显然Lua忽略了它.
即使单个字符存在差异,如何使函数找到字符串?
我有一个矩形框的边界。是否可以在不知道文本大小的情况下将文本(使用自定义字体)放入框中。我的意思是,是否有一个 php 函数可以设置正确的文本大小,以便文本适合用户定义的框?我不需要文字换行。
我发现的唯一功能是imagettfbbox和 imagettftext。
imagettfbbox 正好相反(给出边界,提供字体大小),而 imagettftext 用于在图像上写入文本,仅当 fontSize 已知时。
我需要从一个更大的字符串中检测出一个单词说约翰,说约翰是个好男人 所以我有这个模式来找到这个词
[j][o][h][n]
Run Code Online (Sandbox Code Playgroud)
并按如下方式使用:
local pattern = "[j][o][h][n]"
local str = "john is a good man"
print(str:find(pattern))
Run Code Online (Sandbox Code Playgroud)
为了接受字母多次出现(例如jooohn是一个好人),我将模式修改为
[j]+[o]+[h]+[n]+
Run Code Online (Sandbox Code Playgroud)
我需要忽略可能出现在单词之间的空格(或其他非字母字符)(例如joh; n是一个好人),所以我在每个字母中加上[^ az]*,结果模式是
[j]+[^a-z]\*[o]+[^a-z]\*[h]+[^a-z]\*[n]+[^a-z]\*
Run Code Online (Sandbox Code Playgroud)
现在这对于"jooh!n is a good man"这样的词来说是完美的.但如果!符号出现在重复的字母内,模式失败.例如,在jo!ohn是一个好人,没有检测到模式.如何修改模式以实现此目的?
编辑
例:
local str = "jooohn is a good man"
local pattern = "[j]+[^a-z]*[o]+[^a-z]*[h]+[^a-z]*[n]+[^a-z]*"
print(str:find(pattern))
Run Code Online (Sandbox Code Playgroud)
这将打印
1 7
但
local str = "joo!ohn is a good man"
local pattern = "[j]+[^a-z]*[o]+[^a-z]*[h]+[^a-z]*[n]+[^a-z]*"
print(str:find(pattern))
Run Code Online (Sandbox Code Playgroud)
只打印nil
我需要一个允许我在场景2中检测到joo!ohn的模式
我需要压缩表单的一些文本数据
[70,165,531,0|70,166,562|"hi",167,578|70,171,593|71,179,593|73,188,609|"a",1,3|
Run Code Online (Sandbox Code Playgroud)
数据包含几千个字符(约10000 - 50000).
我阅读了各种压缩算法,但无法决定在这里使用哪一种.
这里重要的是:压缩字符串应该只包含字母数字字符(或一些特殊字符,如+ - /&%@ $ ..)我的意思是大多数算法都提供乱码ascii字符作为压缩数据吗?必须避免这种情况.
有人可以指导我如何在这里继续吗?
PS文本包含numbers, 主要'是|角色.其他角色非常罕见.
lua ×2
string ×2
text ×2
algorithm ×1
compression ×1
fonts ×1
lua-patterns ×1
php ×1
truetype ×1