2013-03-15 88 views
2

我有三个字,我想第一个空间后,周围添加内容的跨度,以便jQuery的间隔后,第一空间

hello world成为hello <span>world</span>

hello world again成为hello <span>world again</span>

任何帮助将不胜感激

在这里编辑它是

$("#main-nav li a").each(function(index) { 
    $(this).html($(this).text().replace(/([\S]*)\s(.*)/, "$1 <span>$2</span>")); 
}); 
+0

从这些词来自哪里?你能告诉我们更好的理解代码吗? – Raman 2013-03-15 07:51:20

回答

5

你可以用一些正则表达式做到这一点:

text = text.replace(/([\S]*)\s(.*)/, "$1 <span>$2</span>"); 

如果texthello world,上面的代码将其转换为hello <span>world</span>

+0

如果文字长于两个单词,则效果不佳。 – sQVe 2013-03-15 07:56:49

+0

@sQVe - 你说得对。没有注意到!嗯..它只匹配最后一个'\ s'! – techfoobar 2013-03-15 07:58:50

+0

改用'(。\ s)+(。*)'。 – sQVe 2013-03-15 07:59:43

1

也许更容易理解(我肯定),

  1. 对空格字符使用find方法,得到字符串中的第一个位置。
  2. 获取从索引0到特定位置的第一个子串。
  3. 从特定位置获取子串到string.length并将它们包装
  4. 将两个字符串合并一次。