VC中使用SCRIPT 正则写的LRC歌词分析类

2016-02-19 21:06 7 1 收藏

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的VC中使用SCRIPT 正则写的LRC歌词分析类,希望大家看完后能赶快学习起来。

【 tulaoshi.com - 编程语言 】

#include "StdAfx.h"
#include ".lrcobject.h"
#include   comdef.h

LRCOBJECT::LRCOBJECT(const char * text)
: ar(_T(""))
, by(_T(""))
, al(_T(""))
, ti(_T(""))
, oTime(0)

, isLrcFile(FALSE)
{
    Text=text;
    steLrcTi();
}

LRCOBJECT::LRCOBJECT(void)
{
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

LRCOBJECT::~LRCOBJECT(void)
{
    Release();
}
// //查找添加LRC标题

void LRCOBJECT::steLrcTi(void)
{
    CoInitialize(NULL);
    try{
        IRegExpPtr regExpPtr(__uuidof(RegExp));
        regExpPtr-PutGlobal(VARIANT_TRUE);
        regExpPtr-PutPattern("[ti:([^[]:]+)]");
        IMatchCollectionPtr matches = regExpPtr-Execute((const char * )Text); //Execute方法接受的是_bstr_t类型,因此要进行(const char * )转换
        ISubMatchesPtr pMatch;
        if(matches-GetCount() 0 )
        {
            //IMatch2Ptr类型才有GetSubMatches()方法,因此,要进行显式的类型转换
            pMatch=((IMatch2Ptr)matches-GetItem(0))-GetSubMatches();//SubMatches;
            //pMatch-GetItem(0)返回是_variant_t类型,_variant_t类型的属性bstrVal是BSTR类型
            ti= (pMatch-GetItem(0)).bstrVal;
        }
        //--------------------------------------------------
        regExpPtr-PutPattern("[ar:([^[]:]+)]");
        matches = regExpPtr-Execute((const char * )Text);
        if(matches-GetCount()0)
        {
            pMatch=((IMatch2Ptr)matches-GetItem(0))-GetSubMatches();//SubMatches;
            ar= (pMatch-GetItem(0)).bstrVal;
        }
        //-----------------------------------------
        regExpPtr-PutPattern("[al:([^[]:]+)]");
        matches = regExpPtr-Execute((const char * )Text); //用指针要出错
        if(matches-GetCount()0)
        {
            pMatch=((IMatch2Ptr)matches-GetItem(0))-GetSubMatches();//SubMatches;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)            al= (pMatch-GetItem(0)).bstrVal;
        }
        //---------------------
        /*
        短整型(int)
        i = atoi(temp);
        长整型(long)
        l = atol(temp);
        浮点(double)
        d = atof(temp);
        */
        regExpPtr-PutPattern("[offset:(-?d+)]");
        matches = regExpPtr-Execute((const char * )Text); //用指针要出错
        if(matches-GetCount()0)
        {
            pMatch=((IMatch2Ptr)matches-GetItem(0))-GetSubMatches();//SubMatches;
            by= (pMatch-GetItem(0)).bstrVal;
            try
            {
                oTime=float(atof(by));
            }catch(...){};
        }
        //-----------------------------------------
        regExpPtr-PutPattern("[by:([^[]:]+)]");
        matches = regExpPtr-Execute((const char * )Text); //用指针要出错
        if(matches-GetCount()0)
        {
            pMatch=((IMatch2Ptr)matches-GetItem(0))-GetSubMatches();//SubMatches;
            by= (pMatch-GetItem(0)).bstrVal;
        }

        regExpPtr-PutPattern("[d+:[d.]+]");
        matches = regExpPtr-Execute((const char * )Text); //用指针要出错
        if(matches-GetCount()0)
        {
            isLrcFile=TRUE;
        }
        else
        {
            isLrcFile=FALSE;
        }
        pMatch=NULL;
        matches=NULL;
        regExpPtr=NULL;
        //"[d+:[d.]+]"

    }
    //catch(_com_error& e)
    //{
    /

来源:http://www.tulaoshi.com/n/20160219/1625270.html

延伸阅读
标签: Web开发
function stripscript(s) {      return s.replace(/script.*?.*?\/script/ig, '');  }  稍微说下,高手飘过 /之间的内容/ 是js正则语句的书写开始与结束 .*?是贪婪的匹配,如果不是贪婪的就是.*匹配任何字符,但用贪婪的就是不包含的内容 /ig 是不区分大小写和全局替换
标签: ASP
  VBScript5中增加了许多新功能,最振奋人心的当属类和正则表达式的出现。以下是本人写的一个解析html代码的类。我是学php的,语法有不习惯的地方,请大家多包含。 <% Class HTMLParse     ' 设置 Initialize 事件。     Private Sub Class_Initialize       ...
标签: ASP
前言 首先,在我进入实质性主题并解释如何建立类之前,我希望保证你知道“对象”。虽然你可以在程序中使用对象而不用知道其正确的规则,但我并不建议如此!对于对象的初学者,接下来的部分将让你了解其概念及内容。已经了解面向对象编程(OOP)的读者可以跳过这章节。 导论 l “对象是什么?”——对象通常代表某种实体,主要是一个变量...
歌词格式krc转lrc两种方法 酷狗下载的歌词都是KRC文件,KRC格式文件为酷狗音乐独有的同步歌词格式文件,但是我们其他音乐播放器使用的是LRC格式同步歌词,那么我们怎么才能把krc文件转换为我们自己想要的lrc文件呢?下面提供两种方法供大家参考! 方法一: 我们在这里介绍一个专门的软件可以转。 批量方法:选中转换文件...
不知你是否用过这样的程序,他们本身并没有解压缩的功能,而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。 现在就来讨论一下,如何用匿名管道技术实现这...

经验教程

70

收藏

17
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部