【问题标题】:Select and edit the text of all links in table选择和编辑表格中所有链接的文本
【发布时间】:2015-06-17 23:50:49
【问题描述】:

我正在尝试创建一个替换“。”的基本脚本。或网站特定表格中 url 文本中的“_”。

代码:

$('tbody tr td:nth-child(2) div:nth-child(2) a').each(function() {
    var link = $(this);
    var linkText = link.text();
    link.text( linkText.replace("."," ") );  
    link.text( linkText.replace("_"," ") );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<tbody>
	<tr>
		<td class="category">
			<img src="image.gif" data-original="image.gif"></a>
		</td>
		<td class="filename">
			<div class="visible-xs visible-sm">
				<a href="link" class="link-class">VMware.Workstation.v11.1.2</a>
			</div>				
		</td>								
	</tr>													
	<tr>
		<td class="category">
			<img src="image.gif" data-original="image.gif"></a>
		</td>
		<td class="filename">
			<div class="visible-xs visible-sm">
				<a href="link" class="link-class">ADOBE_AFTEREFFECTS_CC_V2015</a>
			</div>
		</td>
	</tr>
</tbody>

但它不能正常工作。仅使用第一个文本操作并仅替换第一个“。”或“_”不是全部在整个字符串中。

例如:

"VMware.Workstation.v11.1.2" => "VMware Workstation.v11.1.2" - 仅删除第一个点

我需要的是

“ADOBE_AFTEREFFECTS_CC_V2015”=>“ADOBE AFTEREFFECTS CC V2015”和

"VMware Workstation.v11.1.2" => "VMware Workstation v11.1.2"

嗯,有没有办法不删除以 v 开头的字符串后的点(因为版本 v11.1.2)。

如果你能帮我创建这个脚本,我会很高兴,如果有更好的方法来选择这个表/链接并编辑它们的文本会很棒。

编辑

我几乎准备好了,但是这个正则表达式是......

/([\.\-\_])(?![\v\d])/g

链接:http://regexr.com/3b7n6

【问题讨论】:

    标签: javascript jquery replace


    【解决方案1】:

    replace 将正则表达式作为第一个参数。您需要在末尾添加 g 以使其变得贪婪,以便替换所有匹配项。您可以将您的代码翻译成:

    link.text( linkText.replace(/\./g," ") );  
    link.text( linkText.replace(/_/g," ") );
    

    您也可以像这样将它组合到一个replace 调用中:

    link.text( linkText.replace(/[._]/g," ") );
    

    您可以将[] 视为一个包含._ 的字符匹配框。

    MDN:Regular Expressions

    【讨论】:

      【解决方案2】:

      您需要进行全局替换。

      link.text( linkText.replace(/\./g," ") ); link.text( linkText.replace(/_/g," ") );

      【讨论】:

        【解决方案3】:

        首先,您的代码中没有 div:nth-child(2),因此您需要将其替换为 div,因为只有一个 div 子级。

        要替换字符,您可以使用这个简单的正则表达式。

        $('tbody tr td:nth-child(2) div a').each(function() {
            $(this).text( $(this).text().replace(/\.|_/g," ") );
        });
        

        这意味着replace all occurrences of '.' and '_' with ' ' in the current string

        此外,您需要将tbody 包含在table 中才能正常工作。否则 jQuery 将看不到 tbody

        (Demo)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-29
          • 1970-01-01
          • 2013-01-28
          • 2014-02-12
          • 1970-01-01
          • 1970-01-01
          • 2012-08-04
          相关资源
          最近更新 更多