首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从SQLite转储中筛选出文件名?

如何从SQLite转储中筛选出文件名?
EN

Stack Overflow用户
提问于 2013-06-26 05:46:29
回答 2查看 108关注 0票数 0

我正在尝试使用Ruby过滤掉SQLite文本转储中的所有文件名。我不太熟悉正则表达式,需要一种方法来读取和写入文件,这是SQLite转储文件中的另一个图像文件转储文件。我可以过滤掉所有东西,除了下面这样的东西:

代码语言:javascript
复制
VALUES(3,5,1,43,'/images/e/e5/Folder%2FOrders%2FFinding_Orders%2FView_orders3.JPG','1415',NULL);

还有这个:

代码语言:javascript
复制
src="/images/9/94/folder%2FGraph.JPG"

我想不出最简单的方法来过滤它。我尝试过使用split和其他函数,但它并没有根据指定的字符将字符串拆分成数组,而只是删除了字符。

EN

回答 2

Stack Overflow用户

发布于 2013-06-26 05:54:29

你应该能够使用带空格的.gsub('%2', ' ') %2,虽然加了引号,但应该没问题。不过,拆分确实会删除要拆分的字符。因此,您可能不想这样做,或者如果您想这样做,您可能希望使用Array#join方法和您拆分的字符的参数将其放入其中。

票数 0
EN

Stack Overflow用户

发布于 2013-06-26 07:33:53

我想从上面的语句中‘提取’文件名。假设我有“/src=/9/94/ folder%2FGraph.JPG”,我希望将folder%2FGraph.JPG提取出来。

如果要提取src参数中的内容:

代码语言:javascript
复制
foo = 'src="/images/9/94/folder%2FGraph.JPG"'
foo[/^src="(.+)"/, 1]
=> "/images/9/94/folder%2FGraph.JPG"

返回不带括号的字符串。

下面是如何完成第一个步骤:

代码语言:javascript
复制
bar = "VALUES(3,5,1,43,'/images/e/e5/Folder%2FOrders%2FFinding_Orders%2FView_orders3.JPG','1415',NULL);"
bar.split(',')[4][1..-2]
=> "/images/e/e5/Folder%2FOrders%2FFinding_Orders%2FView_orders3.JPG"

并不是编程中的所有东西都是正则问题。实际上,在我看来,大多数事情都不是模式的候选者。例如,第一个示例可以写成:

代码语言:javascript
复制
foo.split('=')[1][1..-2]

第二个是:

代码语言:javascript
复制
bar[/'(.+?)'/, 1]

我们的想法是使用最干净、最清晰和最容易理解的。

如果您想要的只是文件名,那么使用一个只返回文件名的方法。

使用上述方法之一,并将其输出传递给File.basenameFilename.basename仅返回文件名和扩展名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17308148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档