纵码过河山 2021-07-09 10:44 采纳率: 66.7%
浏览 104
已采纳

如何用正则按首行删除缩进?

是否有办法用正则匹配,按照首行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示例,不过别的语言也可以的

  • 写回答

1条回答 默认 最新

  • 八云黧 2021-07-09 11:08
    关注
    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)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月9日
  • 创建了问题 7月9日

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多