我有个需求那就是要在所有字符串中提取出xx.png或者通过拼接(“icon_+xxx+_+xxxx...+_png)的png资源
回复 (26)
用正则匹配出图片文件名
@idreamshen 怎么用?不会写正则,可以举个例子吗?
不会正则就用js的split方法,可以把字符串截取为数组,实际上这个用split更好,正则用来匹配和截取其中的一两个特别的字符串像id,username这些比较有用,另外你要帮写正则就给个匹配的实例,你的那个什么"XXX+XXX+XXX+XXX"这种就用splite就行了
但是中间的参数怎么写这才是关键,感觉没有思路
更复杂的就需要正则了 正则只要我要看出模式才行,这个什么.png在什么位置,前面大概是什么字符,你的描述太模糊,怎么给写正则
@wenshiqi0 但是分割后怎么判断他就是png命名的一部分呢?这又是个问题啊!
@iluspan 完全不懂你是要干嘛 能不能描述清楚
就是这样子的,我有个需求,就是读取本地的所有png资源,然后在再跟使用过的png资源匹配,如果是使用过的,就将其输出再删除。
@wenshiqi0 就是这样子的,我有个需求,就是读取本地的所有png资源,然后在再跟使用过的png资源匹配,如果是使用过的,就将其输出再删除。
@iluspan 使用过的png和没有使用的有什么区别
@wenshiqi0 然后我的思路就是第一步先去除本地的所有png资源并将其存在一个数组中,再读取目录中的所有文件把其所有的资源都读出来,然后在逐个读出png资源并将其存在另一个数组,最后两个数组再做匹配如果发现两个数组是有相同的png的话就将其输出并删除。
@wenshiqi0 比如我读到的文本内容中有gui/common/profile_back.png 那么profile_back.png就是使用过的
那就用正则了 ^[a-zA-Z0-9\.\/\\\-\:]/([a-zA-Z0-9\_]*).png$ 这个可以把你的文件名提取出来,在后面加一个.png就好了
@wenshiqi0 还有一种形式就是以字符串拼接形式出现。如this.ui(“iconSpr”).startLoad1("icon_skill_"+this.model.getValue(“cId”)+"“+"icon_skill_"+d[“idx”]+”png"); 这样子的形式,我要做是把icon_skill+这样子的子字符串都提取出来,然后再进行匹配,比如我的读取的本地资源有[‘abc.png’,’] 然后读取出来的文件资源有[[‘a.png’,’b.png’]], 用instanceof 判断当数组[‘a.png’,’b.png’],所有的元素都是true的话才算是相等的。然后就将abc.png输出并在本地删除
这是我写的源代码,测试了的,你试试
@wenshiqi0 第二种png用过的情况不知道你理不理解我讲的啥?
@iluspan 没看懂
@wenshiqi0 对啊,因为一个文件都是囊括这些所有会出现的情况,所以我也觉得一开始是用spite分割肯定不行。只能是通过正则法则或者字符串遍历啥的。但是我想到这里都没有思路了,正则我弄了半天都写不来这东西。
@wenshiqi0 那我这样子问吧,startLoad("icon_skill_"+this.model.getValue("cId")+""+d["idx"]+"_png") 就举这个代码粒子,就是怎么用正则来 获取以类似这种形式(就是后面是含有"_png"))的括号里面所有类似icon_skill_的字符串
@iluspan 你不要用这种代码段来让我拼接啊 你给几个拼接好的列子啊
@wenshiqi0 就是比如 icon_skill_sky.png 这就是有可能出现的一种形式, 也就是以 字符串_字符串.....png 但是在字符串和字符之间有可能是存在带有变量的表达式,所以这些都是要考虑进去的情况,就如startLoad(“icon_skill"+this.model.getValue(“cId”)+"“+d[“idx”]+"_png”) 在这个代码我只需要提取出icon_skill_png就行了,其他的带有参数的表示就不用管他了,你看看有没有啥正则可以直接提取出类似这样格式下字符串
先前回答有点问题 这个应该可以了把
之前回答的有问题 你看看上面的这个 自豪地采用 CNodeJS ionic
嗯嗯!谢谢啦