当前位置: 首页 > Web前端 > HTML

追根溯源:substr和substring的历史

时间:2023-04-02 21:33:46 HTML

简介:很多时候,想截取字符串的时候,都会想到substr和substring的方法,但是怎么传参的我想不起来了。哪个应该传递字符串的长度,哪个应该传递开始和结束下标。如果不勾选这两个功能,我还是不敢用。所以我总觉得这两个方法的名字真的很蹩脚。但真的是这样吗?看来是时候看看这两种方法的历史了。1追根溯源在编程语言的悠久历史中,出现过多种编程语言。然而,大浪淘沙,冲铅之后,许多已经落入沙中,而有的却依然耀眼。那么stubstr和substring的DNA从何而来呢?1950s和1960s1954-FORTRAN1958-LISP1959-COBOL1964-BASIC1970-Pascal1967-1978:建立基本范式1972-C语言1975-Scheme1978-SQL(起初只是查询语言,扩展后也有程序结构)1980年代:增强、模块、性能1983年-C++(如带类的C)1988年-Tcl1990年代:互联网时代1991年-Python1991-VisualBasic1993-Ruby1995-Java1995-Delphi(ObjectPascal)1995-JavaScript1995-PHP2009-Go2014-Swift(编程语言)1.1Substr()首次出现在C++中。在C语言中,没有substr或substring方法。然而,在1983年,C++语言中出现了substr()方法。不过此时substring还没有出现,可见substr是stustringstringsubstr(size_tpos=0,size_tlen=npos)const的老大哥;从C++的方法定义可以看出,substr的参数是起始下标,字符串长度。std::stringstr="我们思考一般,但我们生活在细节中。";std::stringstr2=str.substr(3,5);//"think"1.2最早出现在Javasubstring()distancesubstr()方法出现已经将近十年了,这里涌现出一批后起之秀,比如:Python、Ruby、VB等,但是它们之间没有stustring基因。在Java的String类中,我们看到了两种方式。从这两个方法可以看出,substring方法的基本原型的参数是开始和结束下标。Stringsubstring(intbeginIndex)//返回一个新字符串,它是该字符串的子字符串。Stringsubstring(intbeginIndex,intendIndex)//返回一个新字符串,它是该字符串的子字符串。1.3JavaScript的历史传承1995年,Netscape聘请了BrendanEich,目的是将Scheme编程语言嵌入到NetscapeNavigator中。在开始之前,NetscapeCommunications与SunMicrosystems合作,在NetscapeNavigator中引入了一种更静态的编程语言Java,以与Microsoft竞争Web技术和平台的用户采用率。Netscape决定他们想要创建的脚本语言将补充Java,并且应该具有类似的语法以排除其他语言,如Perl、Python、TCL或Scheme。为了在竞争提案中捍卫JavaScript的想法,公司需要一个原型。1995年5月,Eich用了10天的时间写完了它。上帝在7天内创造了一切,BrendanEich在10天内创造了一种语言。也许创造是不合适的,因为JavaScript是站在Perl、Python、TCL或Scheme等其他巨人的肩膀上产生的。JavaScript的知名度不如C,是在贝尔实验室精心打造的,但JavaScript并没有在日后的自然选择中变得郁闷。而是依托于C、C++、Java、Perl、Python、TCL、Scheme的优秀基因,进化出更强大、更强大的生命力。因此,可以想象,在10天之内,当BrendanEich写出String的substr和substring方法时,或许他并没有对这两个方法的参数应该如何设置感到困惑,因为在C++和Java的实现中,有已经类似的定义。了解历史,就不会对现在感到困惑。2那么,substr和substring到底有什么区别呢?如下图所示:substr和substring都接受两个参数,它们第一个参数的含义是一样的,不同的是第二个参数。substr的第二个参数是到终点的距离,substring是终点位置。3参考资料维基百科:程序设计语言的历史C++std::string::substrJavaScript如有错误请指正。