如何使用 javascript 随机用 and 或 & 替换一个标点符号
How to replace one punctuation with and or & randomly using javascript
我正在尝试删除后面跟着标点符号的标点符号,我已经做到了,但我需要用 and 或 & 随机替换句子中的最后一个但第二个标点符号。
这是代码
<html>
<head>
<script>
$( document ).ready(function() {
for(var i=0;i<2;i++)
{
var remove_dot=document.getElementsByTagName("p")[i];
var remove=remove_dot.innerHTML;
remove_dot.innerHTML = remove.replace(/[,|.-]+[\s]*([,|.-])/g, "");
}
});
</script>
<body>
<p>hello , . are you | . why , its ok , .</p>
<p>hey , . are you | . why | its ok , .</p>
</body>
在上面的脚本的帮助下,我能够删除标点符号后面的标点符号
这是我的输出
hello . are you . why , its ok .
hey . are you . why | its ok .
但是因为我需要用 and,& 随机替换倒数第二个标点符号,我该如何修改正则表达式
这是我的预期输出。
hello . are you . why and its ok .
hey . are you . why & its ok .
$( document ).ready(function() {
$("p").each(function(){
// get the text of this p
var text = $(this).text();
// remove consecutive ponctuations
text = text.replace(/[,|.-]+\s*([,|.-])/g, "");
// random "&" or "and" to replace the second from the last ponctuation
var rep = Math.random() < 0.5? "&": "and";
// match the second from the last ponctuation
text = text.replace(/[,|.-]([^,|.-]*[,|.-][^,|.-]*)$/, rep + "");
// reset the text of this p with the new text
$(this).text(text);
})
});
匹配从最后一个标点开始的第二个标点的正则表达式,查找后跟任何内容的标点,而不是后跟标点和文本结尾的标点 $
。所以唯一匹配的是倒数第二个。
正则表达式还检查在最后一个标点符号之后是否有一些文本(不能包含标点符号)。如果您确定在最后一个标点符号之后永远不会有文本,请使用这个较短的正则表达式 (/([,|.-])([^,|.-]*[,|.-])$/
).
我正在尝试删除后面跟着标点符号的标点符号,我已经做到了,但我需要用 and 或 & 随机替换句子中的最后一个但第二个标点符号。
这是代码
<html>
<head>
<script>
$( document ).ready(function() {
for(var i=0;i<2;i++)
{
var remove_dot=document.getElementsByTagName("p")[i];
var remove=remove_dot.innerHTML;
remove_dot.innerHTML = remove.replace(/[,|.-]+[\s]*([,|.-])/g, "");
}
});
</script>
<body>
<p>hello , . are you | . why , its ok , .</p>
<p>hey , . are you | . why | its ok , .</p>
</body>
在上面的脚本的帮助下,我能够删除标点符号后面的标点符号 这是我的输出
hello . are you . why , its ok .
hey . are you . why | its ok .
但是因为我需要用 and,& 随机替换倒数第二个标点符号,我该如何修改正则表达式 这是我的预期输出。
hello . are you . why and its ok .
hey . are you . why & its ok .
$( document ).ready(function() {
$("p").each(function(){
// get the text of this p
var text = $(this).text();
// remove consecutive ponctuations
text = text.replace(/[,|.-]+\s*([,|.-])/g, "");
// random "&" or "and" to replace the second from the last ponctuation
var rep = Math.random() < 0.5? "&": "and";
// match the second from the last ponctuation
text = text.replace(/[,|.-]([^,|.-]*[,|.-][^,|.-]*)$/, rep + "");
// reset the text of this p with the new text
$(this).text(text);
})
});
匹配从最后一个标点开始的第二个标点的正则表达式,查找后跟任何内容的标点,而不是后跟标点和文本结尾的标点 $
。所以唯一匹配的是倒数第二个。
正则表达式还检查在最后一个标点符号之后是否有一些文本(不能包含标点符号)。如果您确定在最后一个标点符号之后永远不会有文本,请使用这个较短的正则表达式 (/([,|.-])([^,|.-]*[,|.-])$/
).