【发布时间】:2021-01-04 22:06:29
【问题描述】:
我对编程非常陌生,我正在尝试解决一个练习,您可以根据组成字符是否出现两次或更多次来对字符串(在本例中为单个单词)进行编码。只出现一次的字符编码为“■”,编码两次或更多的字符编码为“X”。
示例:输入 = “竞技场” :: output = “■■XXX■■X■■”
我设法使用嵌套循环和存储character:occurrences 的key:value 对象以非常复杂的方式解决它,但我正在尝试使用动态创建的正则表达式重构解决方案以提高效率,但我认为我' m 不懂正则表达式。
function encodeDupes(word) {
let encoded = "";
for (let char of word) {
let regex = new RegExp(char + "{2,}","ig"); // create a regex to see if "char" occurs 2 or more times
regex.test(word) ? encoded += "X" : encoded += "■"; // check this char against rest of word, push appropriately
}
return encoded;
}
它适用于像char < "m" ? do X : do Y 这样更简单的门,我想我理解这个答案here({n,} = 至少出现n),但我还不够新,所以我还没有确定是我的正则表达式还是我的逻辑。
谢谢!
【问题讨论】:
-
空格、数字和符号呢?
-
@Cuong Le Ngoc 我相信这个练习只涉及单个单词,因为所有其他测试示例(此处未给出)都是无空格的,但我认为它应该适用于 any 输入字符串中的字符。
-
更新:@CuongLeNgoc 你的问题其实很有先见之明 =)
标签: javascript regex