`

[转] [Flash/Flex] 为字符串原型添加splice()方法

阅读更多
http://bbs.9ria.com/thread-79571-1-1.html

资讯类型: 翻译
来源页面: http://www.bennadel.com/blog/2160-Adding-A-Splice-Method-To-The-Javascript-String-Prototype.htm
资讯原标题: Adding A Splice() Method To The Javascript String Prototype
资讯原作者: Ben Nadel
翻译词数: 词
我的评论:挺好的
对这篇文你有啥看法,跟贴说说吧!欢迎口水和板砖,哈哈。欢迎大家和我们一同分享更多资讯。
在我昨天发的博客上,关于在javascript中使用slice(),substring(),和substr()进行子串提取这一问题,我和Andy Matthews简短的讨论了,无论在哪种语言的核心层面,字符串就是一个字符数组。这个概念引发了我如下思考——如果数组和字符串在Javascript都有slice()方法,那么为什么他们不都有一个splice()方法呢?呵呵,我真的想目睹一下,当增加了我们自己的splice()方法后,修改字符串原型到底能变得多简单,当然,这只是开个玩笑。
Javascript已经在数组中支持splice()。所以,不用为字符串重新写Splice()方法,我想最好的做法就是,把我们的目标字符串先转为数组,然后再间接的利用数组中已经定义好的splice()。幸运的是,使用split()和join()两个方法,可以很容易的将字符串转换为数组:
String.split(""),将字符串转换为字符数组
Array.join("") 将字符数组转换为字符串
好吧,让我们来看看一些代码。在接下来的Demo中,我将更新核心字符串的原型。那意味着从今往后我们splice()方法将适用于所有字符串的情况(因为他们都继承自String对象原型)
<!DOCTYPE html>
<html>
<head>
<title>Creating A String.splice() Method In Javascript</title>

<script type="text/javascript">


// Extend the String prototype to include a splice method.
// This will use an Array-based splitting / joining approach
// internally.
String.prototype.splice = function(
index,
howManyToDelete,
stringToInsert /* [, ... N-1, N] */
){

// Create a character array out of the current string
// by splitting it. In the context of this prototype
// method, THIS refers to the current string value
// being spliced.
var characterArray = this.split( "" );

// Now, let's splice the given strings (stringToInsert)
// into this character array. It won't matter that we
// are mix-n-matching character data and string data as
// it will utlimately be joined back into one value.
//
// NOTE: Because splice() mutates the actual array (and
// returns the removed values), we need to apply it to
// an existing array to which we have an existing
// reference.
Array.prototype.splice.apply(
characterArray,
arguments
);

// To return the new string, join the character array
// back into a single string value.
return(
characterArray.join( "" )
);

};


// -------------------------------------------------- //
// -------------------------------------------------- //
// -------------------------------------------------- //
// -------------------------------------------------- //


// Create our test string value.
var message = "Katie is sort of cool.";

// Set the part of the string that we want to delete.
var lameStuff = "sort of cool";

// Now, let's create a more endearing message.
var betterMessage = message.splice(
message.indexOf( lameStuff ),
lameStuff.length,
"crazy-insane kinds of hot"
);

// Output the new message.
console.log(
"New message:",
betterMessage
);


</script>
</head>
<body>
<!-- Intentionally left blank. -->
</body>
</html>


正如你所看到的,整个流程实际上是很简单:
1.将字符串转换成数字符数组。
2.对字符数组使用splice()方法
3.将字符数组转换为字符串
当我们运行上述代码,我们得到以下输出结果:
New message: Katie is crazy-insane kinds of hot.

正如你看到的,现有的子串"sort of cool"被删除,“crazy-insanekinds of hot”被插入。当这个操作被执行,我们的基本数据结构成为一个字符数组值。然而,我们插入的是一个字符串,这种混合的“数据类型”无所谓,因为当我们使用join()方法时,所有的这些将变成一个字符串值。
注意:我用“数据类型”在这里是用的losest的意思。Javascript并不能真正区分字符串和字符(一个字符是一个sting长度)。
虽然这是一种随意而为,我想不出一个伟大的使用案例使用了splice()方法。典型的情况是,当我用一个字符串(可以为空)来代替另一个字符串,它是通过使用Javascript的规范表达替换方法。但即使如此,这个探索肯定会帮助人们发现,使用原型继承机制是很不错的。
分享到:
评论

相关推荐

    String-Splice:拼接,但用于字符串而不是数组

    String :: Splice-拼接,但用于字符串而不是数组 概要 use String::Splice; say ' Perl 6 is awesome ' . & splice ( 0 , 6 , ' Raku ' ); # Raku is awesome say splice ( ' This is Rakudo ' , * -2 , 2 ); # ...

    splice-string:删除或替换部分字符串,例如Array#splice

    删除或替换部分字符串,例如Array#splice 它可以正确处理带有表情符号的切片字符串。 安装 $ npm install splice-string 用法 import spliceString from 'splice-string' ; spliceString ( 'unicorn' , 3 , 4 , '...

    JavaScript中的splice方法用法详解

    JavaScript中的splice主要用来对js中的数组进行操作,包括删除,添加,替换等。 注意:这种方法会改变原始数组!。 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) ...

    java关于字符串拼接的笔试题-splice:复制数据的共享基底

    像大象一样,Splice 有很多东西,这取决于您的上下文和联系点: 一个无主的分布式数据库 一个 Observed-Remove 多图 CRDT,它通过数据日志呈现/实现查询功能,通过...支持存储 一种将操作具体化为可计算值的媒介,...

    string-splice:拼接字符串的小辅助函数

    splice(str, index, count, add) #例子 var splice = require('string-splice') ; var exampleString = 'abcdefg' splice(exampleString, 1, 2, 'ZZZ'); //'aZZZdefg' #Attributions:取自这个堆栈溢出问题的答案...

    php按单词截取字符串的方法

    本文实例讲述了php按单词截取字符串的方法。分享给大家供大家参考。具体分析如下: 这里指定字符串和单词数量进行截取 复制代码 代码如下:&lt;?php function limit_words($string, $word_limit) {  $words = ...

    javascript文档

    encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...

    JScript 语言参考

    encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...

    微软JavaScript手册

    encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...

    JS字符串按逗号和回车分隔的方法

    split函数可以传入一个正则表达式作为分隔的字符串。 function foo(str){ var temp = str.split(/[\n,]/g); for(var i =0;i&lt;temp.length;i++){ if(temp[i] == ){ temp.splice(i, 1); //删除数组索引位置应...

    JavaScript splice()方法详解

    定义和用法splice() 方法用于插入、删除或替换数组的元素。语法arrayObject.splice(index,howmany,element1,…..,elementX)参数 描述index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素...

    JavaScript面试题

    splice():删除指定的元素,并且在删除的位置添加元素 Sting()、toString():将数组转为字符串 join():拼接字符串,将数组用什么符号转为字符串 split():将字符串转为数组 shift():删除数组的第一项 pop():删除...

    JavaScript中的splice()方法使用详解

    JavaScript数组的splice()方法改变数组的内容,增加了新的元素,同时消除旧元素。 语法 array.splice(index, howMany, [element1][, ..., elementN]); 下面是参数的详细信息: index : 在该索引开始改变的数组。 ...

    JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)

    主要介绍了JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)的相关资料,需要的朋友可以参考下

    JS数组splice操作实例分析

    本文实例讲述了JS数组splice操作。分享给大家供大家参考,具体如下: node2:/var/www/html/js#cat h23.js [removed] var narr=['a','b','c','d','e']; console.log(narr); for (var j=0;j&lt;narr&gt;'+narr[j]); }; ...

    JavaScript基础和实例代码

    6.3.4 使用splice()方法添加和删除数组元素 6.3.5 修改length属性更改数组 6.3.6 调用Array对象的方法生成字符串 6.3.7 连接两个数组 6.3.8 常见属性和方法汇总 6.4 Date对象 6.4.1 生成日期对象的实例 6.4.2 如何...

    源文件程序天下JAVASCRIPT实例自学手册

    6.3.4 使用splice()方法添加和删除数组元素 6.3.5 修改length属性更改数组 6.3.6 调用Array对象的方法生成字符串 6.3.7 连接两个数组 6.3.8 常见属性和方法汇总 6.4 Date对象 6.4.1 生成日期对象的实例 6.4.2 如何...

    js删除数组中某几项的方法总结

    1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组。 splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除...

Global site tag (gtag.js) - Google Analytics