【问题标题】:Jquery: Doing some operations on stringsJquery:对字符串进行一些操作
【发布时间】:2009-07-28 19:19:02
【问题描述】:

我有一个这样的字符串:

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.

我想将字符串“and my car is red”添加到“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

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

我很困惑。显然人们对这个问题提出了一些问题。如果您认为该问题缺少某些信息,请提出,我会尽力提出一个合理的问题。

编辑:添加更多示例。

谢谢!

【问题讨论】:

  • 广义方法称为“DOM”。
  • 如果那是一个字符串,那么什么决定了标题是什么?
  • 我应该得到一个徽章,说明我今天有多少已删除的答案...
  • 我他妈的投了你的票。这个问题和你想要的答案一样笼统。没有提及您需要的标签,或者它是否是纯文本或内容。只需输入诸如“jQuery”之类的关键字并期望我们做一些魔术。因此:-1。干杯,
  • 问题是,从你的问题中无法清楚地看出,如果你想要对节点进行操作,也就是说,如果标题以某种方式标记,或者它只是纯文本,在这种情况下,您应该给出一个用法示例,因为这在 HTML/JS 世界中非常很少见。您是否已经拥有该字符串,或者您是否需要从 HTML 中提取它?这就是一个好问题不会留给读者的所有要点。

标签: javascript regex


【解决方案1】:

这似乎有效...

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

它将用文本“Heading”分割整个字符串,因此您基本上有一个“Heading”小节的基于 1 的索引数组,然后可以轻松地将其附加到然后再重新组合在一起。如果您想这样做,您可以更改它以完全替换文本。

【讨论】:

  • 非常感谢。你能帮我试着让这个例子工作吗? jsbin.com/ufoqo 非常感谢,这和我想象的一样。
  • 有趣,以前从未使用过 jsbin ......整洁。我想我把它编辑成你想要的......
  • @John Rasch,当您保存在 jsbin 中时,它不会覆盖以前的文件,它会为您提供一个新的 URL 以粘贴到此处。再次感谢!
【解决方案2】:

对于选择特定项目,您可以查看索引过滤器(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();

当然,那是特定的代码,但这只是为了炫耀总体思路。我希望这会有所帮助。

【讨论】:

  • 谢谢,但我认为这行不通。 .find('h2') 寻找一个元素,而不是问题所要求的一段字符串。
  • 不,第一行代码是这里的关键,将其包裹在$函数中,前提是代码是有效的html,会返回一个jQuery包裹的dom,而不是字符串,到变量“sn-p”,然后您将能够运行 jQuery 函数,例如“find”。自己试试吧
  • @d.,他在那段字符串中没有 H2 标签。他想要基本的字符串操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多