我正在尝试创建一个替换“。”的基本脚本。或网站特定表格中的网址文字中的“_”。
代码:
$('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”=&gt; “VMware Workstation.v11.1.2” - 仅删除第一个点
我需要的是
“ADOBE_AFTEREFFECTS_CC_V2015”=&gt; “ADOBE AFTEREFFECTS CC V2015”和
“VMware Workstation.v11.1.2”=&gt; “VMware Workstation v11.1.2”
嗯,有没有办法在用v开头的字符串之后不改变点(因为版本v11.1.2)。
如果你帮助我创建这个脚本,如果有更好的方法来选择这个表/链接并编辑他们的文本会很棒,我将很高兴。
修改
我差不多准备了,但这个正则表达式是......
/([\.\-\_])(?![\v\d])/g
答案 0 :(得分:0)
replace
将正则表达式作为第一个参数。您需要在末尾添加g
以使其变得贪婪,以便替换所有匹配项。您可以将代码翻译为:
link.text( linkText.replace(/\./g," ") );
link.text( linkText.replace(/_/g," ") );
您还可以将其与replace
一个link.text( linkText.replace(/[._]/g," ") );
调用结合起来:
[]
您可以将.
视为包含_
和screen width - container x
的一个字符匹配的框。
答案 1 :(得分:0)
您希望进行全球替换。
webpack-dev-server
答案 2 :(得分:0)
对于其中一个代码,代码中没有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)