необходимо удалить специальные символы в середине предложения, но не начинать и не заканчивать строку - PullRequest
2 голосов
/ 05 июня 2019

У меня есть строка

string= "& & This is&test release & this is rest release &";
Output ="& & This istest release  this is rest release &"

Ввод:

string ="& & This is&test release & this is rest release &";

Вывод должен быть

"& & This istest release  this is rest release &";

Но я получаю вывод

"& & This istest release & this is rest release &";

Мой код:

var str = "& & & This is&test release * this is rest release & &";
var str2="";
var str1=str.split(' ');
for(var i=0;i<str1.length;i++) {
 if(/^[0-9a-zA-Z]/.test(str1[i])) { 
   str1[i]=str1[i].replace(/[^a-zA-Z ]/g, "") 
 }
 str2=str1.join(' ');
}
console.log(str2); 

Ответы [ 4 ]

0 голосов
/ 05 июня 2019

что по этому поводу? это работает отлично. Я разделил строку на начало, середину и конец. затем заменили специальные символы только посередине, а затем соединили все 3 части назад.

string= "& & This is&test release & this is rest release &";

i=string.search(/[\w\s]/i)//first letter
j=string.search(/[\w\s][^\w\s]*$/i)//last letter

start=string.substr(0,i)
middle= string.substr(i,j-i+1)
end=string.substr(j+1)

middle=middle.replace(/[^\w\s]/gi,"")//replace only in the middle

output=start+middle+end

console.log(output)

Надеялся, что помог тебе.

0 голосов
/ 05 июня 2019

Попробуйте

let s= "& & This is&test release & this is rest release &";

let o= s.replace(/^([& ]*)(.*?)([& ]*)$/, (m,a,b,c)=> a+b.replace(/&/g,'')+c);

console.log(o);
0 голосов
/ 05 июня 2019

Вот то, что я придумал, которое будет работать с любыми специальными символами.

var str = "& & This is&test _&&release & this_is rest release &";
var replacedString = str.replace(/(\w\s*)([^a-zA-Z0-9]+)(\s*\w)/g, "$1 $3"); 
console.log(replacedString);

Выход:

& & This is test  release  this is rest release &

Шаблон замены будет соответствовать любому количеству специальных символов между любыми буквенно-цифровыми символами.

0 голосов
/ 05 июня 2019

Я не уверен насчет пробелов в строке здесь (они вам действительно нужны, но вот альтернативный вариант, который вы можете попробовать)

let string = "& & This is&test release & this is rest release &";

let a = string.split("&").map(el => {
  if (el == "" || el == " ") {
    el = " &"
    }
  return el
})
let result = a.join(""); // join acc to gap you want
console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...