Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Created August 10, 2014 15:16
Show Gist options
  • Save jikeytang/85c1fd4738e31adffc7e to your computer and use it in GitHub Desktop.
Save jikeytang/85c1fd4738e31adffc7e to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140811-题目1
如何用非正则的方式找出一个字符串中出现的数字序列。
比如:var str = 'asdfasdf213sdd123aaa123aad123fdssaa'; -> arr = [213, 123, 123, 123]
PS:
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
// you code
```
2. 粘贴代码时请使用shift+tab,缩进前面的空白。
@replace5
Copy link

function find_number(str) {
    str = String(str + 'n');
    var c, i = 0, len = str.length, result = [], cache = '';
    while(i < len) {
        c = str.charAt(i);
        if (c * 1 >= 0) {
            cache += c;
        } else if(cache.length) {
            result.push(cache);
            cache = '';
        }
        i++;
    }
    return result;
}

@chriswenwu
Copy link

 function fd(s){
        var i=0, j=0, r=[],k=0,c=true,vbs;
        for(var j=0;j<s.length;j++){
            var vbs= s.charCodeAt(j);
            if(vbs>=48&&vbs<=57){
                    if(!r[i]){
                        r[i]= s.charAt(j).toString();
                    }else{
                        r[i]+= s.charAt(j).toString();
                    }
            }else if(c){
                i++;
                c=false;
            }
         }
            return r;
        }
            console.log(fd("dsdsdx2232xsds2222x21d"));

@lixianwie
Copy link

    //定义任何包含数字的字符串
    var str = '73asdfasdf1545asdf321asdf2asdf3';

    //调用方法
    test(str);

    function test(str){

        //取得数字在字符串中的位置
        var num = [];
        for(var i=str.length; i>=0; i--){
            if(parseInt(str.charAt(i))){
                num.push(i);
            }
        }

        //按从小到大排序
        num.sort(function(a,b){
            return a > b;
        });

        /**
         * 以下代码是渣渣 望高手指正
         */

        //为了方便运算
        //往数字添加一位数值(比原数据最后一值要大)
        num.push(num[num-1]+1);

        //取得连续位数的长度,方便一会截取位数
        var temp = num[0],
            iNow = 1,
            arr = [];
        for(var j=1; j<num.length; j++){
            if(num[j] - temp === 1){
                iNow++;
            } else {
                arr.push(iNow);
                iNow = 1;
            }
            temp = num[j];
        }

        //替换位数为真实值
        for(var l=0; l<num.length; l++){
            num[l]=str.charAt(num[l]);
        }

        //得到最后结果
        var arr2 = [];
        for(var k=0; k<arr.length; k++){
            arr2.push(num.splice(0, arr[k]));
        }

        console.log(arr2);
    }

@wsgouwan
Copy link

//  使用正则
        var str = 'asdfasdf213sdd123aaa123aad123fdssaa';
        var re = /\d+/g;
        console.log( str.match(re));

        // 不适用正则
        var len = str.length ;
        var arr = [];
        var temp = '';
        for(var i = 0 ; i < len; i ++){
            if( str.charAt(i) < 10 ){
                temp += str.charAt(i);
            }else{
                if( temp != '' ){
                    arr.push(temp); 
                }
                temp = '';
            }
        }

        console.log( arr )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment