Как удалить символ ↵ между двумя словами строки JavaScript? - PullRequest
0 голосов
/ 07 октября 2019

Если я выделю две строки вместе и получу текст, используя window.getSelection().toString(), я получу между двумя словами (последнее слово из верхней строки и первое слово из нижнего слова). Ниже мой код -

document.addEventListener('dblclick',function (event) {

var element = document.getElementsByClassName(event.target.parentElement.parentElement.parentElement.className);


var T= window.open("", "MsgWindow", "width=200,height=500");

T.document.write(element[0].innerText.replace(/\n/g, "<br/>"));


T.document.write(`<script>
window.addEventListener("keydown", function(e){
if(e.keyCode === 16) {
var text = "";
if (window.getSelection) {
text_1 = window.getSelection().toString();
text = text_1.replace(/\u21b5/g," "); // my attempt to corrrect
                        } 
words = text.split(" ");
console.log(words);
}
},false);
</script>`);
},false);

Например, если я выберу -

Стороны

Секция

и нажмите Shiftключ я получаю -

Array(1)
0: "Sides↵Section"
length: 1
__proto__: Array(0)

но выход должен быть-

Array(1)
0: "Sides Section"
length: 1
__proto__: Array(0)

Как я могу заменить пробелом?

PS: я пробовалнекоторые возможности, основанные на решениях, предоставленных SE, но это не сработало, плз, не считайте это тривиальным или дублирующим сообщением.

Ответы [ 4 ]

2 голосов
/ 07 октября 2019

Я думаю, вы захотите заменить новые строки и возврат каретки

Примерно так:

text = text_1.trim().replace(/[\n\r]/g, ' ');

ОБНОВЛЕНИЕ

// Solution from code sample 

  T.document.write(`<script>
    window.addEventListener("keydown", e => {
      if (e.keyCode === 16) {
        if (window.getSelection) {
          const text = window.getSelection().toString();
          const words = text.trim().replace(/\r?\n/g, " ");
          console.log(words);
        }
      }
  });
  </script>`);
1 голос
/ 07 октября 2019

Просто замените \s+ (любой пробел из одного или нескольких символов) на " ". Вы также можете разделить на том же регулярном выражении, если это было вашей целью.

document.addEventListener('select', () => {
  if (window.getSelection) {
    text = window.getSelection().toString();
    words = text.trim().replace(/\s+/g, " ");
    console.log(words);
  }
});
<textarea rows=4>
foo
bar
</textarea>
1 голос
/ 07 октября 2019

Вы можете заменить \ n и \ r \ n пробелом. В зависимости от того, какую ОС использует. Если вы не хотите беспокоиться о проверке ОС, то сначала замените \ r \ n, затем \ n.

ОБНОВЛЕНИЕ:

Код: text = text_1.replace(/\r?\n/g, " ");

0 голосов
/ 07 октября 2019

Вы можете заменить новые строки и возврат каретки, а затем заменить пробелы.

window.addEventListener(
  "keydown",
  function(e) {
    if (e.keyCode === 16) {
      var text = "";
      if (window.getSelection) {
        text_1 = window.getSelection().toString();
        text = text_1
                .replace(/\n|\r/g, " ")
                .replace(/\s/, "");
      }
        words = text.split(" ");
        console.log(words);
    }
  },
  false
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...