Javascript过程解压缩一串十进制数字
Javascript procedure to decompress a string of decimal digits
我刚开始学习JavaScript,我非常讨厌它。
我想要一个解压缩十进制数字字符串的过程,如下所示:
"301051"的意思是"3个零,一个1,一个0,然后5个1"
。"301051"——>"0001011111"
一个由1和0组成的字符串不会被改变(也不会有超过两个连续的0或1)
"01001100" -> "01001100"
我开始写了,但是我写的都是面条式的代码。
for (i = 0; i < thisString.length;)
{
thisNum = thisString.charCodeAt(i);
if (thisNum > 1)
{
substr = "";
for (j = 0; j < thisNum; j++)
subtr += thisString.charAt(i);
if (i == 0)
thisString = substr + thisString.substring(2
}
}
我不想完成它,因为我厌倦了使用有限数量的JavaScript字符串函数。我相信Stack Overflow的天才们会为我提供一行的解决方案。对不对? ?
这里有一个简单的算法解决方案:
function decompress(str) {
var result = "", char = "";
for (var i = 0; i < str.length; i++) {
char = str.charAt(i);
console.log(char - '0');
if (char > 1) {
result += new Array(+char + 1).join(str.charAt(++i));
} else {
result += char;
}
}
return result;
}
还有一个更简单的正则表达式:
function decompress(str) {
return str.replace(/([2-9])(.)/g, function(m, a, b) {
return new Array(+a + 1).join(b);
});
}
这里唯一的魔力是new Array(+a + 1).join(b)
(也被两个解决方案使用)。第一个+
把a
(或char
)变成一个数字。然后我创建了一个包含a + 1个元素的数组,并将它们与以下字符作为"胶水"连接在一起。结果是b
的a
重复字符串。
我相信你需要这样的东西:
function decompress(thisString) {
var result = '';
for (var i = 0; i < thisString.length; i += 2) {
var thisNum = parseInt(thisString[i], 10);
if (thisNum > 1) {
for (var j = 0; j < thisNum; j++)
result += thisString[i + 1];
} else {
result += (thisString[i] + thisString[i + 1]);
}
}
return result;
}
你有很多变量,它们作为全局变量泄漏。请确保使用var
来声明它们。
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 在javascript中接受十进制数字的Regex
- 如何将返回一串数字的 JSON 属性转换为日期
- 在一串数字中查找特定值
- 如何将一串数字转换为数组
- javascript对象(如array&一串
- 如何在TextBox中只允许使用十进制数字
- 如何用Javascript生成一串数字和字母
- 如何删除“"使用jQuery从十进制数字中提取
- 只允许整数和十进制数字textbow jquery(不带正则表达式)
- 十进制数字的 Javascript 正则表达式 - 替换非数字和多个小数点
- 加载一串 markdown 属性作为 JavaScript 对象
- 使用 toFixed 对十进制数字进行舍入
- 为什么一串数字的工作方式与新日期中的实际数字不同
- 如何将一串数字和数学运算符变成整数答案?- JavaScript
- 有没有任何字符串方法,能让我把一串数字,转换成一串数字和字母
- 对一串数字进行排序,每个数字里面都有一个字母.确保在原始数组中保持相同的重复项位置
- 在javascript中创建一串数字,每个数字都有限制
- Javascript过程解压缩一串十进制数字
- 我的网页应该打印出一串数字,但isn'