如何从字符串中计算某些字符

How to calculate certain chars from a string

本文关键字:字符 计算 字符串      更新时间:2023-09-26

我从昨天开始就在寻找这个,已经搜索了很多,但没有找到任何确切的答案。如果你发现了,告诉我,我会很感激并结束这个问题:)

我想要的是:

-> If there are an even number of digits, double every other digit starting with the first
-> If there are an odd number of digits, double every other digit starting with the second.

这就是我目前所做的:

function validate(n){
            var num = n.toString(); // THIS COULD BE AN ARRAY OR WHATEVER
            if (eval(num%2==0)) { // IF HAS EVEN NUMBER OF DIGITS
                for (var i=0; i<num.length; i++) {
                    if (num.charAt(i) === num.charAt(0)) {
                        eval(num.charAt(i)*=2);
                    }
                }
                console.log(num);
            } else { // IF HAS ODD NUMBER OF DIGITS
                for (var i=0; i<num.length; i++) {
                    if (num.charAt(i) === num.charAt(1)) {
                        eval(num.charAt(i)*=2);
                    }                       
                }
                console.log(num);
            }
        }
        validate(1234516178);

示例:

1714 => [1*, 7, 1*, 4] => [2, 7, 2, 4]
891 => [8, 9*, 1] => [8, 18, 1]

希望我是清白的。有人能帮忙吗?欣赏

也许这对你有用。它使用一个包含值的数组,并对值进行迭代以进行更改。

function validate(n) {
    var array = n.toString().split('').map(Number),
        number = n % 2 ? array[1] : array[0];
    return array.map(function (a) {
        return a === number ? 2 * a : a;
    });
}
function print(o) {
    document.write('<pre>' + JSON.stringify(o, 0, 4) + '</pre>');
}
print(validate(1234516178));
print(validate(1714)); // => [1*, 7, 1*, 4] => [2, 7, 2, 4]
print(validate(891));  // => [8, 9*, 1] => [8, 18, 1]

你可以试试这样的东西:

function validate(n) {
    n = n.toString();
    var isEven = (parseInt(n, 10) % 2 === 0);
    var digits = n.split("");
    // Strings to numbers
    digits.forEach(function(digit, index) {
        digits[index] = parseInt(digit, 10);
    });
    if(isEven) {
        var firstDigit = digits[0];
        digits.forEach(function(digit, index) {
            console.log(digit);
            if(digit === firstDigit) {
                digits[index] *= 2;
            }
        });
    } else {
        var secondDigit = digits[1];
        digits.forEach(function(digit, index) {
            if(digit === secondDigit) {
                digits[index] *= 2;
            }
        });
    }
    return JSON.stringify(digits);
}

当然,这可以通过包含更多条件并只为每个留下一个条件来做得更好

你不需要字符串来完成

function validate(s){
  var a = parseInt(s);
  var b = 0;
  var odd = (a+'').length %2//true;
  //var summ = 0;
  while(a>=1){
    var b = Math.floor(a%10);
    var c = odd?b: b*2//<10? b*2 : b*2-9;
    //summ += c;
    odd = !odd;
    a = a/10;
    
    //output
    $('input').after('+'+c)
    
  }
  //output
  $('input').after('<br>')//.after(summ).after('<br> summ: ')
//return summ%10
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="validate($('input').val())">validate</button>
<input>