《TypeScript图形渲染实战:2D架构设计与实现》 —2.2.5 Doom3Tokenzier处理数字和空白符

举报
华章计算机 发表于 2019/12/11 12:26:42 2019/12/11
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第2章,第2.2.5节,作者是步磊峰。

2.2.5  Doom3Tokenzier处理数字和空白符

  首先声明一下,IDoom3Tokenizer词法解析器仅支持ASCII编码字符串的解析,不支持UNICODE编码字符串的解析(换句话说,词法解析器不支持中文解析),实际上Doom3引擎文本格式文件也仅支持ASCII编码的字符串。

  然后再强调一点,像Java的JDK、C#的.NET Framework或C语言的CRT(C语言运行库)都内置了强大的ASCII字符处理函数,但是在TypeScript或JavaScript中处理ASCII字符的一些操作需要自己来实现。下面就先来实现两个简单但是必需的ASCII字符处理函数。具体代码如下:

 

// 接口实现使用implements关键字

class Doom3Tokenizer implements IDoom3Tokenizer {

    // 使用了初始化表达式方式初始化字符串数组

    private _digits : string [ ] = [ "0" , "1" , "2" , "3" , "4" , "5" , "6" ,

    "7" , "8" , "9" ] ;

    private _whiteSpaces : string [ ] = [ " " , "\t" , "\v" , "\n" ] ;

   

    //判断某个字符是不是数字

    private _isDigit ( c : string ) : boolean {

        for ( let i : number = 0 ; i < this . _digits . length ; i++ ) {

            if ( c === this. _digits [ i ] ) {

                return true ;

            }

        }

        return false ;

    }

   //判断某个字符是不是空白符

   //一般将空格符(" ")、水平制表符("\t")、垂直制表符("\v")及换行符("\n")统称为空白符

    private _isWhitespace ( c : string ) : boolean {

        for ( let i : number = 0 ; i < this . _whiteSpaces . length ; i++ ) {

            if ( c === this . _whiteSpaces [ i ] ) {

                return true ;

            }

        }

        return false;

    }

}


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。