gpt4 book ai didi

javascript - 如何使用正则表达式用 replaceAll 格式化 JavaScript 字符串

转载 作者:行者123 更新时间:2023-12-05 01:49:41 25 4
gpt4 key购买 nike

我正在尝试格式化一种由制表符和空格组成的棋盘游戏符号。原始字符串看起来像这样:

1.    \td11-d9    \te7-e10    \n2.    \ta8-c8    \tg7-g10xf10    \n3.    \th11-h9    \tf7-i7    

我使用这个替换方法来清理所有的标签和新行

string.replace(/\s\s+/g, ' ').replaceAll('. ', '.');

所以,之后的字符串看起来像这样:

1.d11-d9 e7-e10 2.a8-c8 g7-g10xf10 3.h11-h9 f7-i7

但是,我想在带点的数字前添加更多空间。因此,字符串必须如下所示,在移动的数字(带点的数字)之前有 3 个空格:

1.d11-d9 e7-e10   2.a8-c8 g7-g10xf10   3.h11-h9 f7-i7

我是否也可以使用一行代码或仅使用一个 JavaScript 方法来完成所有这些操作?

最佳答案

以下是如何在单个 .replace 调用中执行此操作:

const s = "1.    \td11-d9    \te7-e10    \n2.    \ta8-c8    \tg7-g10xf10    \n3.    \th11-h9    \tf7-i7    ";

var r = s.replace(/([.\s])\s*\t|\s+$|\n(?=\d\.)/g, '$1');

console.log(r);

//=> "1.d11-d9 e7-e10 2.a8-c8 g7-g10xf10 3.h11-h9 f7-i7"

正则表达式分解:

  • ([.\s])\s*\t:匹配点或空格并在组 #1 中捕获,后跟 0+ 个空格,然后是制表符。我们将使用 $1
  • 放回此替换品
  • |:或者
  • \s+$:匹配结束前的1+个空格
  • |:或者
  • \n(?=\d\.):如果\n后跟一个数字和一个点则匹配

关于javascript - 如何使用正则表达式用 replaceAll 格式化 JavaScript 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73774490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com