Qual é o JavaScript equivalente a este C#
método:
var x = "|f|oo||";
var y = x.Trim('|'); // "f|oo"
C # apara o caractere selecionado apenas no início e no final da string!
javascript
string
trim
fubo
fonte
fonte
Você pode usar uma expressão regular, como:
ATUALIZAR:
Se você deseja generalizar isso em uma função, você pode fazer o seguinte:
fonte
para manter esta questão atualizada:
aqui está uma abordagem que eu escolheria em vez da função regex usando o operador de propagação ES6.
Versão melhorada após o comentário de @fabian (pode lidar com strings contendo apenas o mesmo caractere)
fonte
[].concat(string)
que não seja o desejado. UsarArray.from(string)
vai funcionar.Uma versão sem regex que é agradável à vista:
Para casos de uso em que temos certeza de que não há repetição dos caracteres nas bordas.
fonte
const trim = (str, chars) => str.split(chars).filter(x => { Boolean(x); console.log(typeof(x), x, Boolean(x)); }).join(chars); const str = "#//#//abc#//test#//end#//"; console.log(trim(str, '#//'));
Se você estiver lidando com strings mais longas, acredito que isso deve superar a maioria das outras opções, reduzindo o número de strings alocadas para zero ou um:
Ou se você quiser cortar um conjunto de vários caracteres:
EDITAR: Para se divertir, corte palavras (em vez de caracteres individuais)
fonte
Isso pode cortar vários caracteres de uma vez:
fonte
Se você definir essas funções em seu programa, suas strings terão uma versão atualizada
trim
que pode cortar todos os caracteres fornecidos:Fonte
https://www.sitepoint.com/trimming-strings-in-javascript/
fonte
Que eu saiba, o jQuery não tem uma função incorporada ao método que você está perguntando. Com o javascript, no entanto, você pode apenas usar substituir para alterar o conteúdo da sua string:
Isso substituirá todas as ocorrências de | com nada.
fonte
$
assim para apenas no final:"||spam|||".replace(/\|+$/g, "")
ou^
assim para apenas no início:"||spam|||".replace(/^\|+/g, "")
Este corta todos os delimitadores anteriores e posteriores
fonte
Eu sugeriria olhar para Lodash e como eles implementaram a
trim
função.Consulte Lodash Trim para a documentação e a fonte para ver o código exato que faz o corte.
Sei que isso não fornece uma resposta exata à sua pergunta, mas acho bom definir uma referência para uma biblioteca sobre essa questão, pois outros podem achar útil.
fonte
A melhor maneira de resolver essa tarefa é (semelhante à
trim
função PHP ):PS: por que postei minha resposta, quando a maioria das pessoas já fez isso antes? Porque eu encontrei "o melhor" erro em todas as respostas: todas usaram a meta '+' em vez de '*', porque
trim
deve remover os caracteres SE ELES ESTÃO NO INÍCIO E / OU FIM, mas retorna a string original em caso contrário .fonte
expandindo a resposta de @leaf, aqui está uma que pode ter vários caracteres:
fonte
Gosto da solução de @ Pho3niX83 ...
Vamos estendê-lo com "palavra" em vez de "char" ...
fonte
fonte
(observe o escape duplo.
\\
necessário, para ter uma barra realmente única na string , que leva ao escape de|
no regExp ).Apenas alguns caracteres precisam de regExp-Escaping. , entre eles o operador de tubos.
fonte
experimentar:
fonte
fonte
Experimente este método:
fonte