如何检查字符串中的每个单独的数字?
在Codewars.com上,我接受了将一串数字转换为'假二进制'的挑战,并且我将每个数字转换为0或1,如果数字小于5,它应该变为0 ,如果它是5或以上,应该成为1.我知道如何去分析,像这样整个字符串的值:如何检查字符串中的每个单独的数字?
function fakeBin(x){
if (x < 5)
return 0;
else return 1;
}
然而,这分析整个字符串的值,我怎么会去分析每个字符串中的个人数字而不是整个事物?
注:我已经看过网站上的解决方案,并不理解他们,我没有作弊。
下面的代码片段将采用一个字符串,并根据您所描述的内容返回由零和/或一个零组成的新字符串。
我们使用for ...of
循环遍历输入字符串,将增加一个0或1,我们基于阵列的回报是否解析INT如果大于或小于5
另外请注意,我们正在检查和投掷如果该字符不是数字,则为错误。
const word = "1639";
const stringToBinary = function(str) {
let ret = [];
for (const char of word) {
if (Number.isNaN(parseInt(char, 10))) {
throw new Error(`${char} is not a digit!`);
} else {
const intVal = parseInt(char, 10);
ret.push(intVal > 5 ? 1 : 0);
}
}
return ret.join('');
};
console.log(stringToBinary(word));
拆分字符串并将当前函数应用于字符串的每个元素。你可以用map
或reduce
做到这一点:
function fakeBin(x) {
x = x.split('');
let toBin = x => {
if (x < 5)
return 0;
else return 1
}
return x.map(toBin).join('');
}
console.log(fakeBin("2351"));
重构
function fakeBin(x) {
x = [...x];
let toBin = x => x < 5 ? 0 : 1;
return x.map(toBin).join('');
}
console.log(fakeBin("2351"));
减少
function fakeBin(x) {
let toBin = x => x < 5 ? 0 : 1;
return [...x].reduce((acc,val) => acc + toBin(val), "");
}
console.log(fakeBin("23519"));
,如果你是在Java中,你可以使用
charAt()
和你做一个对字的长度,你可以通过一个
for(int i = 0; i < text.length(); i++){
yourfunction(texto.charAt(i));
}
*“如果你在java中”* - 该问题标记为“JavaScript”,而不是“Java”...... – nnnnnn
简单的二选一javascript解决方案实现预期解决方案
function fakeBin(x){
x = x+'' ;
var z =[];
for(var i=0;i< x.length;i++){
if((x[i]*1)<5){
z[i] =0;
}else{
z[i]=1;
}
}
return z
}
console.log(fakeBin(357))
超级难看的代码,+1。我真的不知道它可以做得这么丑。 – Dev
谢谢@Dev的投票 –
你能做到在一个符合两个简单的全局字符串替换操作:
function fakeBin(x){
return ("" + x).replace(/[0-4]/g,'0').replace(/[5-9]/g,'1');
}
console.log(fakeBin(1259))
console.log(fakeBin(7815))
console.log(fakeBin("1234567890"))
的("" + x)
部分只是确保你有一个可以使用的字符串,所以函数可以带数字或st环作为输入(如我在上面的示例中所述)。
您可以使用String.prototype.replace()
与RegExp
/([0-4])|([5-9])/g
匹配0-4
,5-9
,更换0
,分别1
let str = "8539734222673566";
let res = str.replace(/([0-4])|([5-9])/g, (_, p1, p2) => p1 ? 0 : 1);
console.log(res);
首先,你需要确保你得到的字符串。如果不是,那么你需要将它转换为字符串,然后使用'x.split(“”);然后循环来生成你的输出字符串。 –
数字是如何分隔的?字符串中的数字是否都是“ guest271314
你想改变数字吗?还是你想要返回一个新的字符串? –