给定一个输入字符串,我想以指定的格式得到它的输出:filename;path
。
输入字符串:
/vob/TEST/.@@/main/ch_vobsweb/1/VOBSWeb/main/ch_vobsweb/4/VobsWebUI/main/ch_vobsweb/2/VaultWeb/main/ch_vobsweb/2/func.js
我期待这个输出字符串:
func.js;VOBSWeb/VosWebUI/VaultWeb/func.js
文件名列在整个字符串的末尾,其路径应该使用每个数字值后的字符(例如/1/VOBSWeb/
然后/4/VobsWebUI
然后{{1 }})
相关:
这与之前的C#问题有关,但这次使用的是JavaScript:String manipulation
答案 0 :(得分:1)
因为我几乎完成了输入,所以这是精简版:
result = subject.replace(/\/?(?:[^\/\d]+\/)+\d+\/([^\/]+\/?)/g, "$1")
.replace(/^.*\/([^\/]+)$/, "$1;$0");
答案 1 :(得分:0)
没关系,这已经在蒂姆的早期帖子中得到了回答
首先,从字符串中删除所有“无趣的东西”。
搜索.*?/\d+/([^/]+/?)
并将所有内容替换为$1
在C#中:resultString = Regex.Replace(subjectString, @".*?/\d+/([^/]+/?)", "$1");
在JavaScript中:result = subject.replace(/.*?\/\d+\/([^\/]+\/?)/g, "$1");
这会将您的字符串转换为
VOBSWeb / VobsWebUI / VaultWeb / func.js
其次,将文件名复制到字符串的前面。
搜索(.*/)([^/]+)$
并替换为$2;$1$2
C#:resultString = Regex.Replace(subjectString, "(.*/)([^/]+)$", "$2;$1$2");
JavaScript:result = subject.replace(/(.*\/)([^\/]+)$/g, "$2;$1$2");
这会将上一个操作的结果转换为
func.js; VOBSWeb / VobsWebUI / VaultWeb / func.js