Как заменить все слова длиной менее 3 в строке с "" (пробел) в JavaScript? - PullRequest
0 голосов
/ 20 сентября 2018

Я получаю доступ к именованной области текстового поля, которая содержит следующий текст:

The First Backward Classes
Commission was formed in
1953 as chairman.
Joachim Alva
fi    
Hardekar Manjappa 
Kaka Kalelkar

, и я хочу удалить все слова в этом тексте, длина которых меньше 3, чтобы я мог получить текстовое поле, содержащее текст:

The First Backward Classes
Commission was formed
1953 chairman.
Joachim Alva
Hardekar Manjappa 
Kaka Kalelkar

Я использую следующий код:

area.value = area.value.replace(/(\b(\w{1,2})\b(\W|$))/g,'').split(/\s+/).join( ' ' );

, но я получаю следующий текст:

First Backward Classes Commission formed 1953 chairman. Joachim Alva fi Hardekar Manjappa Kaka Kalelkar

весь текст в текстовом поле преобразуется водна строка, которую я не хочу.Есть ли лучший способ сделать это?

Ответы [ 4 ]

0 голосов
/ 20 сентября 2018

Попробуйте это.

var data = "The First Backward\n Classes\n Commission was formed in\n1953 as chairman.\nJoachim Alva\nfi\nHardekar Manjappa\nKaka Kalelkar";
var result = data.split('\n').map((line) => 
  line.split(' ').filter(str => str.length >3)
)
console.log(result.join('\n'));
0 голосов
/ 20 сентября 2018
var lines = area.value.split('\n');
var x='';
for(var i=0;i>lines.length;i++){
x+=lines[i].replace(/(\b(\w{1,2})\b(\W|$))/g,'').split(/\s+/).join( ' ' );
}
area.value=x;  
0 голосов
/ 20 сентября 2018

Вот еще один подход, который делает две замены регулярных выражений.Первая замена удаляет слова длиной 2 или меньше, а вторая замена удаляет лишние пробелы новой строки.

var input = "The First Backward Classes\nCommission was formed in\n1953 as chairman.\nJoachim Alva\nfi\nHardekar Manjappa\nKaka Kalelkar\n";
input = input.replace(/\b\w{1,2}\b[ \t]*/sg, "").replace(/\n+(?=\n)/g, "");
console.log(input);
0 голосов
/ 20 сентября 2018

Вы можете сделать что-то вроде

area.value = area.value.split("\n") // split by newline
                       .map((s) => s.replace(/(\b(\w{1,2})\b(\W|$))/g,'')) // replace in each element
                       .join('\n'); // re-insert newlines (if that's what you want to do)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...