Как удалить% из строки, только если % присутствует в первой или последней строке

#javascript #jquery #regex

#javascript #jquery #регулярное выражение

Вопрос:

Я хочу удалить символ% из моей строки, если символ% присутствует в строке, тогда он должен проверить, находится ли он в начале или в конце, затем он должен обрезать значение, а затем предоставить результат.

 Eg: var str = "Value%" or "%Value" or "%Value%"
The result should be = Value.
Eg: var str="Va%ue"
The result should be =Va%ue.
Eg: var str= "Value"
The result should be = Value.
 

Заранее спасибо

Комментарии:

1. На самом деле не стоит отвечать, но чтобы вы начали: str.replace(/^%|%$/g, "")

2. Спасибо! это работает

Ответ №1:

 str = (str[0] == '%' || str.endsWith('%')? str.replace(/%/g, '') : str);
 

Перед заменой проверьте, начинается или заканчивается строка с %

Комментарии:

1. это приведет к удалению%, даже если оно находится в середине, если оно начинается с %, например: str = ‘%test%test’

Ответ №2:

Ваше регулярное выражение в основном должно иметь две альтернативы в сочетании со знаком «или». Вы используете ^ для обозначения начала и $ для обозначения окончания, затем объединяете их с | .

Регулярное выражение для поиска процентов: ^%|%$ .

Если вы добавите это в replace() функцию и добавите флаг глобального поиска g , вы можете легко достичь того, что ищете:

 const percentLookupRegex = /^%|%$/g;

str.replace(percentLookupRegex, '');
 

Вот живой пример:
https://regex101.com/r/nAK64n/2

Комментарии:

1. Знак «или» называется чередованием в регулярном выражении, а ^ и $ называются якорями.

Ответ №3:

Если вы хотите использовать регулярное выражение, вам следует изучить привязки ^ и $

Например.

 str.replace(/^%/, '');
 

Заменит % начало строки на ничто.

Альтернативный подход заключается в использовании startsWith и endsWith , а затем соответствующим образом разрезать строку:

 if (str.startsWith('%') {
   str = str.slice(1);
}
 

Удаление a % в конце строки оставлено в качестве упражнения для читателя

Ответ №4:

 str = (str.indexOf('%') === 0) ? str.substring(1) : str; // check for first character
str = (str.lastIndexOf('%') === (str.length - 1)) ? str.substring(0, str.length - 1) : str; //check for last character
 

Это проверит только первый и последний символ и удалит только те