纵码过河山 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 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM