有一文件内容为:
kkk;111
kkk;222
kkk;333
lll:444
lll:555要求读文件得到下面结果:
kkk 记录数为3
lll 记录数为2

解决方案 »

  1.   

    <script language="javascript">
    var fso, f, ts, s;
    var ForReading = 1, ForWriting = 2, ForAppending = 8;
    var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
    function readFile()
    {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var stfile = fso.GetFile("D:/1.txt");
    var ststream = stfile.OpenAsTextStream(1, 0);
    var result = new Array();
    var stream = null, temp = null;
    var str = "";
    if (!ststream.AtEndOfStream)
    {
    stream = ststream.ReadAll();
    stream = stream.split("\r\n");
    for (var i = 0; i < stream.length; i++)
    {
    temp = stream[i].split(":");
    if (result[temp[0]] == null)
    {
    result[temp[0]] = 1;
    }
    else
    {
    result[temp[0]] += 1;
    }
    }
    //
    for (var i in result)
    {
    str += i + " 记录数为" + result[i] + "\r\n";
    }
    document.all.a2.value = str;
    alert(str);
    }
    ststream.Close();
    }
    </script>
    <body>
    文件内容:<textarea id="a2"></textarea>
    <input type="button" value="读文件" onclick="readFile()">
    </body>
      

  2.   

    function foo()
    {
    var obj = {};
    var f, text;
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var file = fso.OpenTextFile("c:\\test.txt", 1);
    while(!file.AtEndOfStream)
    {
    text = file.ReadLine().split(":");
    if (2 != text.length) continue;
    if (text[0] in obj) obj[text[0]] = obj[text[0]] + 1;
    else obj[text[0]] = 1;
    }
    file.Close();
    fso = null;
    file = null;
    text = "";
    for(j in obj)
    {
    text += j + " --> " + obj[j] + "\n";
    }
    alert(text);
    }
    foo();