CNode

字符串中怎么提取图片文件名

问答
Iiluspan发布于11 年前最后回复11 年前26 回复5558 浏览0 收藏

我有个需求那就是要在所有字符串中提取出xx.png或者通过拼接(“icon_+xxx+_+xxxx...+_png)的png资源

查看回复

回复 (26)

I
idreamshen#1·11 年前

用正则匹配出图片文件名

I
iluspan#2·11 年前
引用 idreamshen用正则匹配出图片文件名

@idreamshen 怎么用?不会写正则,可以举个例子吗?

W
wenshiqi0#3·11 年前

不会正则就用js的split方法,可以把字符串截取为数组,实际上这个用split更好,正则用来匹配和截取其中的一两个特别的字符串像id,username这些比较有用,另外你要帮写正则就给个匹配的实例,你的那个什么"XXX+XXX+XXX+XXX"这种就用splite就行了

I
iluspan#4·11 年前

但是中间的参数怎么写这才是关键,感觉没有思路

W
wenshiqi0#6·11 年前
引用 iluspan@wenshiqi0 可以提供下怎么截取吗?

@iluspan

更复杂的就需要正则了 正则只要我要看出模式才行,这个什么.png在什么位置,前面大概是什么字符,你的描述太模糊,怎么给写正则

I
iluspan#7·11 年前
引用 wenshiqi0@iluspan <pre <code var str = "aaa+bbb+ccc+ddd"; var array = str.split("+"); console.log(array[0...

@wenshiqi0 但是分割后怎么判断他就是png命名的一部分呢?这又是个问题啊!

W
wenshiqi0#8·11 年前
I
iluspan#9·11 年前

就是这样子的,我有个需求,就是读取本地的所有png资源,然后在再跟使用过的png资源匹配,如果是使用过的,就将其输出再删除。

I
iluspan#10·11 年前
引用 wenshiqi0@iluspan 完全不懂你是要干嘛 能不能描述清楚

@wenshiqi0 就是这样子的,我有个需求,就是读取本地的所有png资源,然后在再跟使用过的png资源匹配,如果是使用过的,就将其输出再删除。

I
iluspan#12·11 年前
引用 wenshiqi0@iluspan 完全不懂你是要干嘛 能不能描述清楚

@wenshiqi0 然后我的思路就是第一步先去除本地的所有png资源并将其存在一个数组中,再读取目录中的所有文件把其所有的资源都读出来,然后在逐个读出png资源并将其存在另一个数组,最后两个数组再做匹配如果发现两个数组是有相同的png的话就将其输出并删除。

I
iluspan#13·11 年前
引用 wenshiqi0@iluspan 使用过的png和没有使用的有什么区别

@wenshiqi0 比如我读到的文本内容中有gui/common/profile_back.png 那么profile_back.png就是使用过的

W
wenshiqi0#14·11 年前

那就用正则了 ^[a-zA-Z0-9\.\/\\\-\:]/([a-zA-Z0-9\_]*).png$ 这个可以把你的文件名提取出来,在后面加一个.png就好了

I
iluspan#15·11 年前
引用 wenshiqi0那就用正则了 ^[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输出并在本地删除

W
wenshiqi0#17·11 年前

这是我写的源代码,测试了的,你试试

I
iluspan#18·11 年前
引用 wenshiqi0<pre <code var str = 'gui/common/profile back.png'; var reg = /^[a zA Z0 9\.\/\\\ \:] \/([a zA Z...

@wenshiqi0 第二种png用过的情况不知道你理不理解我讲的啥?

I
iluspan#20·11 年前

@wenshiqi0 对啊,因为一个文件都是囊括这些所有会出现的情况,所以我也觉得一开始是用spite分割肯定不行。只能是通过正则法则或者字符串遍历啥的。但是我想到这里都没有思路了,正则我弄了半天都写不来这东西。

I
iluspan#21·11 年前
引用 wenshiqi0@iluspan 没看懂

@wenshiqi0 那我这样子问吧,startLoad("icon_skill_"+this.model.getValue("cId")+""+d["idx"]+"_png") 就举这个代码粒子,就是怎么用正则来 获取以类似这种形式(就是后面是含有"_png"))的括号里面所有类似icon_skill_的字符串

W
wenshiqi0#22·11 年前
引用 iluspan@wenshiqi0 那我这样子问吧,startLoad("icon skill "+this. model.getValue("cId")+" "+d["idx"]+" png") 就举这个...

@iluspan 你不要用这种代码段来让我拼接啊 你给几个拼接好的列子啊

I
iluspan#23·11 年前

@wenshiqi0 就是比如 icon_skill_sky.png 这就是有可能出现的一种形式, 也就是以 字符串_字符串.....png 但是在字符串和字符之间有可能是存在带有变量的表达式,所以这些都是要考虑进去的情况,就如startLoad(“icon_skill"+this.model.getValue(“cId”)+"“+d[“idx”]+"_png”) 在这个代码我只需要提取出icon_skill_png就行了,其他的带有参数的表示就不用管他了,你看看有没有啥正则可以直接提取出类似这样格式下字符串

W
wenshiqi0#24·11 年前

先前回答有点问题 这个应该可以了把

W
wenshiqi0#25·11 年前

之前回答的有问题 你看看上面的这个 自豪地采用 CNodeJS ionic

I
iluspan#26·11 年前

嗯嗯!谢谢啦

参与回复
登录后即可参与回复。登录