小菜想实现这样一个需求,在一个Editplus文档中,有很多行10位的数字,这些数字已经排好序了。
比如:
1234567890
1234567891
1234567892
1234534124
1234614124
4321412414
5636373573有什么办法能方便的找出两行至少前7位相同的数字吗?请高手指点。
比如,上面的数字中,能够找出
1234567890
1234567891
1234567892不知道是否能有正则表达式之类的实现这个需求。或者有其他方法也可以,先谢谢啦!

解决方案 »

  1.   

    我的思路
    请把字符粘贴进来:
    <textarea id="s" rows="17"></textarea>
    <input type="button" value="处理" onclick="func()"/>
    结果如下:
    <textarea id="r" rows="17"></textarea>
    <script>
    func = function(){
    document.getElementById("r").value = "";
    var sva = document.getElementById("s").value.split("\n");
    var o={},a=[],flag={};
    for(var i=0;i<sva.length;i++){
    if(o[sva[i].substr(0,7)]){
    a.push(sva[i]);
    if(!(flag[sva[i].substr(0,7)])){
    a.push(o[sva[i].substr(0,7)]);
    flag[sva[i].substr(0,7)]=true;
    }
    }else{
    o[sva[i].substr(0,7)] = sva[i];
    }
       }
       document.getElementById("r").value = a.toString().replace(/,/g,"\n");
       }
    </script>
      

  2.   

    哦我只比较了
    1234567000
    1234567999
    这样两种情况,没把
    1234567000
    1234566999
    这样往下想
    看来如果要往数学方面想还不能单纯这样,不过js要处理这东西还要parseInt一次,可能效率不比直接字符串处理要强
      

  3.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title></title>
        <style type="text/css">
            div{ float:left; }
            #divCenter{ padding-top:100px;margin:0 50px; }
            .txt{width:200px;height:200px;}
            #txtOldData{background-color:#A6CAF0;}
            #txtAnswer{background-color:#EBA9A6;}
        </style>
        <script type="text/javascript">
            function test() {
                var arr = document.getElementById("txtOldData").value.replace(/ +/g, '').split("\n");
                var tempStr = arr[0].substring(0, 7);
                var compareLen = 7, equalNum = 0;
                var answer = "";
                for (var i = 1; i < arr.length; i++) {
                    if (arr[i].substring(0, 7) == tempStr) {
                        if (equalNum == 0)
                            answer += arr[i - 1] + "\n";
                        answer += arr[i] + "\n";
                        equalNum++;
                    } else {
                        tempStr = arr[i].substring(0, 7);
                        equalNum = 0;
                    }
                }
                document.getElementById("txtAnswer").value = (answer);
            }
        </script>
    </head>
    <body>
        <div>
            请输入数值:<br />
            <textarea id="txtOldData" class="txt">
    1234567890
    1234567891
    1234567892
    1234534124
    1234614124
    4321412414
    5636373573
            </textarea>
        </div>
        <div style="padding-top:90px;padding" >
            <input type="button" value="测试==>" onclick="test()" />
        </div>
        <div>
            结果:<br />
            <textarea id="txtAnswer" class="txt"></textarea>
        </div>
    </body>
    </html>华丽登场!
      

  4.   

    你的  var compareLen = 7 后面从来没有用过哦,调试的时候遗留下来的问题吧
      

  5.   

    把后面的7换成compareLen就好了, 这个是为程序的灵活性而设置的。方便比较不同的长度。
      

  6.   

    p哥,你的对象o用数组的那种方括号创建和赋值,为什么我不行呢var slideDiv = function () {
            this.divParament = null; 
        }
        slideDiv.prototype = {
            //初始化
            _initialize: function () {
                var _self = this;
                _self.divParament = {};
                _self.divParament[div] = "123456";//这里出问题了
                alert(_self.divParament.div);
            },
      

  7.   

    靠,刚回帖就明白了,要用_self.divParament[“div”],基础太差了