是否有办法用正则匹配,按照首行n个空格数,删除每行前n个字符?
例如有一段字符串:
" if (a > b) \n return true;\n return false;"
效果:
if (a > b)
return true;
return false;
经过正则替换后:
if (a > b)
return true;
return false;
推荐js示例,不过别的语言也可以的
是否有办法用正则匹配,按照首行n个空格数,删除每行前n个字符?
例如有一段字符串:
" if (a > b) \n return true;\n return false;"
效果:
if (a > b)
return true;
return false;
经过正则替换后:
if (a > b)
return true;
return false;
推荐js示例,不过别的语言也可以的
let spaceDetect = /([ ])+\S/
// string是输入的字符串
let string = " if (a > b) \n return true;\n return false;"
// 计算非空白字符前有多少空格,但是会把\n这些算进去,可能会有小问题
let num = spaceDetect.exec(string)[0].length-1
// 通过num构建正则对象
let re = new RegExp("\n([ ]{"+num+"})","g")
// 将所有的\n后面num个空格替换为\n,同时还要去除第一行的空格
let result = string.replaceAll(re,"\n").slice(num)