从包含在特定元素之间的字符串中剪切出一段文本(jquery/javascript)

从包含在特定元素之间的字符串中剪切出一段文本(jquery/javascript),javascript,jquery,replace,Javascript,Jquery,Replace,我一直在试图修改一个字符串。获取包含在其中的内容,删除其中的一部分,并将该文本复制为段落本身的alt属性。我决定开始文本,它必须被剪切([并完成它]),所以它里面的所有内容都必须被剪切并粘贴为alt属性。看起来很简单,但我在JQuery(更好)或Javascript上找不到方法,但我知道一定有方法 在这个链接()中,您可以看到我刚刚开发的流程图。流程图是使用一个应用了特定类(.floppt)的列表自动创建的,元素内部是我必须剪切的文本 <li>list 01 01 01 ([This

我一直在试图修改一个字符串。获取包含在其中的内容,删除其中的一部分,并将该文本复制为段落本身的alt属性。我决定开始文本,它必须被剪切([并完成它]),所以它里面的所有内容都必须被剪切并粘贴为alt属性。看起来很简单,但我在JQuery(更好)或Javascript上找不到方法,但我知道一定有方法

在这个链接()中,您可以看到我刚刚开发的流程图。流程图是使用一个应用了特定类(.floppt)的列表自动创建的,元素内部是我必须剪切的文本

<li>list 01 01 01 ([This text must be removed and copied as "alt" or "title" text])</li>
  • 列表01([此文本必须删除并作为“alt”或“title”文本复制])
  • 你将在链接上看到的html正是我直接从umbraco获得的html,我不能对它进行太多修改(比如添加特定的样式),这就是为什么我用我的脚本做了一些“罕见”的事情,呵呵

    我希望这一切对你们有意义


    谢谢,

    如果您使用此jquery:

    $('.flowchart li > p').each(function () {
         var $this = $(this),        //store this so we can use it later
             txt = $this.text(),     //this is the current text value
             lText = txt.split('['); //this is splitting the text at the '['
    
         $this.attr({ title: ""+lText[1] }); //here we are setting the title to lText[1] which is the text AFTER the split
         $this.text(lText[0]);               //here we are setting the current text to lText[0] which is the text BEFORE the split
    });
    
    它将在添加到标题的
    [
    处拆分文本,然后将文本设置为文本的第一部分。 如果可能,您应该更改文本,以便只获取
    [
    而不获取
    ([text])
    ,否则您只需要更多的代码即可删除它

    这是小提琴的链接

    以下是一个扩展版本,它将拆分开始和结束:

      $('.flowchart li > p').each(function () {
           var $this = $(this),
           txt = $this.text(),
           lText = txt.split('['),
           rText = txt.split(']');
    
                if (typeof rText[0] === "undefined")
                    {rText[0] = ""}  
                if (typeof rText[1] === "undefined")
                    {rText[1] = ""}  
                if (typeof lText[0] === "undefined")
                    {lText[0] = ""} 
                if (typeof lText[1] === "undefined")
                    {lText[1] = ""} 
                $this.attr({ title: lText[1]+"" });
                $this.text(lText[0]+" "+rText[1]);
        });
    

    它还将检查字符串值是否未定义,如果未定义,则将设置为空字符串以保存并添加“未定义”作为标题。

    谢谢wf4。这并不是我想要的,因为我希望能够设置文本的开头和结尾,这样当有人为它键入文本时就不会出错。但是我想我会这样做,呵呵。如果你愿意,我可以为你做,这不会太多。我在手机上只是不w但是我会启动我的笔记本电脑,很快会为你更新我的答案。:-)哇哦,伙计。太聪明了@wf4!非常感谢你的帮助。这正是我想要的。我甚至没有想过用不同的字符拆分两次,然后再合并它们。只需几行代码,那就太好了。谢谢:我想这是你错过的东西sed,但它仍然将第一行之后的所有内容保存为title[我只需要在前面添加一行:
    $this.attr({title:lText[0]+“”);
    我添加的那行简单的内容是从lText[1]的拆分中获取数组的变量(在它内部保存第一个[)之后的所有内容。
    var titleText=lText[1]。拆分('])
    而且效果很好:D我已经在JSFIDLE上更新了代码,所以您可以查看:再次感谢。