Jquery:对字符串进行一些操作

时间:2009-07-28 19:19:03

标签: javascript regex

我有一个这样的字符串:

Heading
Some interesting text here
HeadingSome interesting text hereHeading
Some interesting text here
Heading
Some interesting text here

我想要做的是在第三个标题下添加另一个标题,以便最终看起来像这样:

Heading
Some interesting text here
HeadingSome interesting text hereHeadingHeading
Some interesting text here
Heading
Some interesting text here

我正在寻找一种通用的方法来选择任何标题并附加内容。

这是第二个和第三个例子:

我有一个字符串。我们不要使用任何DOM术语,因为它们会引起混淆。

My name is Mark. My name is Mark. My name is Mark. My name is Mark.

我想在第三次重复“我的名字是马克”中添加字符串'和我的车是红色的'。

My name is Mark. My name is Mark. My name is Mark and my car is red. My name is Mark.

这是另一个例子:

My car is red. My car is red. My car is red. My car is red.

在第四次重复时,我想将文本更改为“我的车是蓝色的。”

My car is red. My car is red. My car is red. My car is blue.

谢谢!

我问了一个可能相关的问题,我无法找到答案。但是那里的每个人都说使用正则表达式很容易: Javascript String Library

编辑:为标签添加了正则表达式。

我很困惑。显然人们已经对这个问题提出了一些问题。如果您认为问题遗漏了一些信息,请问,我会尽力创建一个明智的问题。

编辑:添加了更多示例。

谢谢!

2 个答案:

答案 0 :(得分:3)

这似乎有用......

// headingIndex starts at 1...
function appendTo(currentText, headingIndex, newText) {
    var arr = currentText.split('Heading');
    arr[headingIndex] += newText;
    return arr.join('Heading');
}

它会将整个字符串拆分为文本“Heading”,因此您基本上拥有“Heading”子部分的基于1的索引数组,然后可以轻松地将其附加到后面加入再次回到一起。您可以更改此项以完全替换文本,如果这是您想要做的。

答案 1 :(得分:1)

要选择特定项目,您可以查看索引过滤器(eq =等于,lt =小于等),例如:$('h2')。eq(3).append(...)

修改

看到你的请求是关于作为字符串的工作,如果你像这样包装它仍然可以应用上述:

var snippet = $('<div>'+stringToManipulate+'</div>');
snippet.find('h2').eq(3).html(snippet.find('h2').eq(3).html()+'more text...');
stringToManipulate = snippet.html();

当然,这是具体的代码,但它只是为了炫耀一般的想法。我希望有所帮助。