`

[转] [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的规范表达替换方法。但即使如此,这个探索肯定会帮助人们发现,使用原型继承机制是很不错的。
分享到:
评论

相关推荐

    JavaScript中常见的字符串操作函数及用法

    字符串分割,即将一个字符串分割为多个字符串,JavaScript 中给我们提供了一个非常方便的函数 `split()`: * `var myStr = "I,Love,You,Do,you,love,me"; var substrArray = myStr.split(","); // ["I", "Love", ...

    js String 添加与删除一个元素

    不过,我们可以使用一些方法来模拟添加或删除字符串中的元素。这篇博客将深入探讨如何在JavaScript中处理这一问题。 首先,我们要了解JavaScript字符串的基本操作。字符串是由Unicode字符组成的,常见的操作包括...

    字符串-关于字符串的创建-常见函数

    `pop()`和`push()`分别用于删除和添加数组末尾的元素,`shift()`和`unshift()`处理数组首部,`splice()`可以插入、删除和替换数组中的元素,`slice()`返回一个新的数组,`join()`将数组元素合并为字符串,`concat()`...

    JavaScript中的splice方法用法详解

    JavaScript中的splice方法是一个非常强大的数组操作工具,它可以用于删除、插入和替换数组中的元素。由于splice方法会直接修改原数组,所以在使用时需要谨慎,尤其是当你不希望改变原数组的情况下。 1. 删除元素: ...

    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 ); # ...

    JS删除字符串中重复字符方法

    这为我们在数组上操作提供了便利,因为数组的方法比字符串丰富得多。通过将字符串转换成数组,我们可以利用数组的方法来处理字符串中的每个字符。 在提供的代码中,使用了字符串的`split('')`方法来将字符串分割...

    js代码-字符串转数组删除指定下标再转成字符串 字符串转数组删除指定元素再转成字符串

    例如,你可能需要将一个字符串转换为数组,然后根据需求删除某个指定下标的元素,最后再将处理后的数组转回字符串。下面将详细解释这个过程以及涉及的JavaScript知识。 1. **字符串转数组** 在JavaScript中,我们...

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

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

    JavaScript字符串对象slice方法入门实例(用于字符串截取)

    如果你需要直接在原始字符串上进行修改,可以考虑使用`substring`或`substr`方法,或者使用数组方法如`splice`(尽管它们的用法有所不同)。 在实际开发中,掌握`slice`方法可以帮助你更灵活地处理字符串,提高代码...

    flex array 一些操作

    `splice`方法是处理数组元素非常灵活的一种方式,它可以用来添加、替换或删除数组中的元素。其基本语法如下: ```actionscript array.splice(start, deleteCount[, item1[, item2[, ...]]]) ``` - **start**:必需...

    js数组与字符串常用方法总结

    5. `indexOf(searchValue)`:此方法查找并返回指定子字符串在原字符串中首次出现的索引。如果未找到,返回-1。如`"abcdefga".indexOf('a')`返回`0`,`"abcdefga".indexOf('h')`返回`-1`。 6. `lastIndexOf...

    javascript中数组(Array)对象和字符串(String)对象的常用方法总结

    总结来说,JavaScript通过为数组和字符串提供丰富的内置方法,为开发者提供了方便快捷的操作方式。掌握这些方法不仅可以提高开发效率,还可以使代码更加简洁明了。在实际开发过程中,合理地运用这些方法,能够帮助...

    json字符串操作,数组类型的格式,增删改查

    一、JSON字符串转换为JavaScript对象 在进行操作之前,首先需要将JSON字符串转换为JavaScript对象。这可以通过`JSON.parse()`方法实现: ```javascript let jsonString = '{"array": ["item1", "item2", "item3"]}'...

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

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

    JavaScript常用数组、字符串、Object方法

    JavaScript中常用的数组方法如下: - push():向数组末尾添加一个或多个元素,并返回新的长度。 - pop():删除并返回数组的最后一个元素。 - unshift():向数组开头添加一个或多个元素,并返回新的长度。 - ...

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

    首先,我们可以定义一个名为`limit_words`的函数,它接受两个参数:一个是需要处理的字符串`$string`,另一个是限制的单词数量`$word_limit`。函数的工作流程如下: 1. 使用`explode`函数和一个空格作为分隔符对...

    flex_运算符.pdf

    字符串拥有多个方法,如length(获取字符串长度),concat(合并字符串),charAt(获取指定索引的字符),indexOf(查找字符首次出现的位置),split(按分隔符分割字符串),substr(截取子字符串),substring...

    js处理json以及字符串的比较等常用操作

    - 使用JavaScript的字符串方法,如localeCompare,它是一个在本地敏感的方式来比较两个字符串,并返回一个数字表示一个字符串是位于另一个字符串之前、之后,还是等价。 - 此外,直接使用JavaScript的比较运算符...

    JS 清除字符串数组中,重复元素的实现方法

    本文讲述了使用JavaScript清除字符串数组中重复元素的四种不同实现方法。文中提到的四种方法各有优劣,分别包括普通遍历法、复制数组法、正则表达式法和关联结构法。这些方法能够适用于不同规模的数组数据,并能有效...

Global site tag (gtag.js) - Google Analytics