题目
一个unix格式的路径, 将其简化
例如
/a/
//简化结果为: /a
/a/././b/../../c
简化结果为:/c
我的答案
看到这种字符串一类的题目, 就忍不住想用正则表达式完成, 如下
function getPath(str) {
let reg1 = /\.\//g
let reg2 = /(\/){2,}/g
let reg3 = /\./g
str = str.replace(reg1, '').replace(reg2, '/').replace(reg3, '../')
let reg4 = /\.\.\//g
let reg6 = /[a-z]+\/\.\.\//
let str1 = str
while (reg4.exec(str)){
str1 = str1.replace(reg6, '')
}
str = str1.replace(/(\/$)/, '')
console.log(str)
return str
}
let str = '/a/././b//../../c/'
getPath(str)
假装结尾
最开始我在正则中使用了“?=”, 但是一直匹配不成功。这里抛出一个问题, 如果谁会, 还请告知一下。
console.log(/(?=^a)bd/.test('abd,bcd'))//为什么会打印出false
最后正则表达式还是很有必要学习一下的。