2017-01-21 8 views
0

Я пытаюсь удалить пунктуации, за которыми следуют пунктуации, и я это сделал, но мне нужно заменить последний, но второй знак препинания в предложении с и или & случайным образом.Как заменить одну пунктуацию на и/или случайным образом с помощью javascript

Вот код

<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, "$1"); 
       } 
       }); 
     </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 . 

Но, как мне нужно, чтобы заменить вторая последняя пунктуация случайным образом и, & Как я могу изменить regexp Вот мой ожидаемый результат.

 hello . are you . why and its ok . 
     hey . are you . why & its ok . 
+0

Есть больше знаков препинания, чем «, | .-». Вы хотите сделать все это или просто так? – RobG

ответ

1
$(document).ready(function() { 
    $("p").each(function(){ 
     // get the text of this p 
     var text = $(this).text(); 

     // remove consecutive ponctuations 
     text = text.replace(/[,|.-]+\s*([,|.-])/g, "$1"); 

     // 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 + "$1"); 

     // reset the text of this p with the new text 
     $(this).text(text); 
    }) 
}); 

Регулярное выражение, которое соответствует второй из последнего ponctuation, обратите внимание на ponctuation, за которой следует что-нибудь а не ponctuation, что сопровождается ponctuation, а затем в конце текста $. Таким образом, единственный матч для этого будет вторым с последнего.

Регулярное выражение также проверяет, есть ли какой-либо текст после последней ponctuation (который не должен содержать подписи). Если вы уверены, что никогда не будет текста после последнего использования, используйте это более короткое регулярное выражение (/([,|.-])([^,|.-]*[,|.-])$/).