2008年1月23日水曜日

複数行文字列の行数を取得する

notemaxのように複数行文字列の行数を取得します。
正規表現版はパターンを"(\\r\\n)+"に変更することで、空行を無視するようにもできます。
#module
// instr()を利用した行数の取得
#defcfunc get_lines_num var p1
    result = 0
    repeat
        result++
        ins = instr(p1, cnt"\n")
        if ins == -1 : break
        continue cnt + ins + 2
    loop
    return result
// 正規表現を利用した行数の取得
#defcfunc get_lines_num2 var p1
    if vartype(com_regexp) != vartype("comobj") {
        // comオブジェクト型変数の初期化
        newcom com_regexp, "VBScript.RegExp"
        comres com_result
        com_regexp("Pattern") = "\\r\\n"
        com_regexp("Global") = 1
    }
    com_regexp->"Execute" p1
    return com_result("Count") + 1      // 行数 = 改行の個数 + 1
#global

    s = "Hot\nSoup\nProcessor\n\n"
    mes get_lines_num(s)
    mes get_lines_num2(s)
    stop

0 件のコメント: