javascript - 我正在尝试制作 RLE 代码但没有成功
问题描述
我正在尝试实现“运行长度编码”的功能,但我被困在了中间。
例如,我有字符串:"RRRTTTFBB"
并且我试图将其分隔为这种数组:["RRR", "TTT", "F", "BB"]
。
我只设法将项目放入数组的 1 个键中,如下所示:["RR" "R" "TT" "T" ....]
我试过用while循环、for循环、if/else、switch来做,但我不知道我做错了什么。
function rleFunc(str) {
let newArr = [];
const strTrim = str.trim();
const strUp = strTrim.toUpperCase();
const arr = strUp.split("");
const arrLength = arr.length;
// Anyone has idea what to put here?? I'm lost
return newArr;
}
解决方案
另一种方法是使用正则表达式.match
来获得您想要的结果:
const str = "RRRTTTFBB";
console.log(str.match(/(.)\1*/g));
由于以下表达式,这是有效的:
(.)
: 表示组合任何字符\1*
:表示使用先前分组的字符并匹配它的零次出现/g
: 意味着对整个字符串重复这个模式(不仅仅是第一次出现)
推荐阅读
- azure - 点网框架 4.7 不适用于 Azure VM 服务器中的 Windows 2019
- java - 如何在安卓保险箱中存储外部密钥/秘密?
- python - 需要帮助使用 selenium 自动抓取网站的必要代码
- javascript - 如何摆脱 css 圈的溢出 - “溢出:隐藏”不起作用
- html - 如何更改最后两个菜单的文本颜色
- java - 由 ResourceResponseEntity 创建的命名文件
- angular - 未发送角度请求
- java - 使用单选按钮进行 Firebase 过滤
- javascript - 使用按钮展开表格行
- reactjs - 在 AWS Amplify multiples 前端中使用 React-Native 应用程序查询 DynamoDB