目录
一、需求要点
接到一个需求在用户选择Git工程地址后,项目名称默认为其Git代码库名
其中Git代码库的名称需要我自己从链接中进行截取,首先想到的自然就是正则表达式
二、实现思路
首先想到的就是借助正则表达式来进行实现
但是,作为一个菜鸡,不太懂正则表达式,只能在网上看看有没有相关的实现方法
1、正则截取两个字符串之间及字符串前后内容的方法
因为链接的形式为下图,所以想要截取/和.git之间的字符串,于是检索了两个特定字符串之间的内容。
查到的内容:https://www.jb51.net/article/102237.htm
其中是这样解决的
于是我试了一下
gitURLName = value.match(/[/](\S*).git/)[1]
可是因为链接中有好几个/,这种形式是以第一个/为起始截取的,不符合标准。我又不会从最后一个开始截取,所以我就想了另外一个方法,曲线救国了一下
2、先将字符串倒置,再进行截取
将字符串倒置,反正其中.git的确定的,再用上述的正则截取方式,让它从第一个/为截取休止,就能达到目的
有查询了实现方法:https://www.cnblogs.com/sweet-ice/p/10577562.html
先将字符串进行拆分,再倒置,最后拼起来,再进行倒置
于是写了如下代码:
let gitNameRev = value.split("").reverse().join("")
let gitURLName1 = gitNameRev.match(/tig.(\S*)[/]/)[1]
gitURLName = gitURLName1.reverse()
console.log('gitNameRev',gitNameRev);
console.log('gitURLName1',gitURLName1);
console.log('gitURLName',gitURLName);
然而令我万万没想到的是,它又不取第一个/,取了最后一个。???,啊这。。。。
嚯,这小东西还挺令人惊喜的呢,还怪让人欲罢不能的
于是问题又回归到了找最后一个/上面,那我何必还要倒置两次呢,怪麻烦的
3、正则获取指定字符(最后一个/)之间内容(最终解决)
于是又继续打着找教程的旗号,网上冲浪【误】
在这个教程中介绍了 获取最后一个/之前全部内容 和 获取最后一个/之后全部内容。
之后,把这个教程和我已经写好的结合了一下,代码如下
gitURLName = value.match(/([^/]+).git/)[1]
console.log('gitURLName',gitURLName);
看看,看看,多么简洁,多么优雅,就好像看到了欧拉公式时一样,让人心潮澎湃 【啧啧啧】
最后得到的内容如下图:
三、后记
咩哈哈哈哈哈哈哈,解决啦。而且还把我解决的思路给梳理写出来了。(本人记忆不太好,说不定下次再遇到这种问题,可能会来回来如何解决的)
请原谅一个小菜鸡解决一个问题之后,喜悦之情难以言表,只能哈哈哈哈哈哈哈