2017-10-25 7 views
-5

不要な単語の色を変更できますが、不要な単語の最後の3文字をアスタリスクに置き換えるにはどうすればよいですか?不要な単語を編集する

テキスト:私はトイレに行くとき

は多くの場合、badWordOneは私のbadWordTwoの外に が来ます。例えば

Javascriptを

$('#example').profanityFilter({ 
customSwears: ['badWordOne', 'badWordTwo'], 
filter: false, 
profaneText: function(data) { 
data.forEach(function(element, index) { 
var str = '<span class="red">' + element + '</span>'; 
$('#example').html($("#example").html().replace(element, str)); 
}); 
} 
}); 
+2

最後の3文字を置き換えるのに何を試しましたか?このソースコードでは、スパンを使って単語を折り返しているのがわかりますが、文字を置き換える試みはありません。このようなものでしょうか? '' '+ element.substr(0、element.length-3)+' *** '' – NewToJS

+1

あなたは使用しているプラ​​グインのドキュメントを見ましたか? –

答えて

2

、あなたは最後のアスタリスクで置き換えることを、あなたは看板の文字列と番号を渡すことが可能な機能を、書くことができます。

function asteriskize(str, count = 3) { 
    return str 
     .substring(0, str.length - count) + 
     (new Array(count)).fill('*').join('') 
} 

それは次のように動作します。

const str = 'badWordOne' 
const processed = asterskize(str) // processed = 'badWord***' 

それとも、私が言ったように、あなたも交換する文字列の末尾からシンボルの数を渡すことができます。

const str = 'badWordThree' 
const processed = asteriskize(str, 5) // processed = 'badWord*****' 

もあなたはprofanityFilterプラグインで次のように使うことができます:

$('#six').profanityFilter({ 
    customSwears: ['badWordOne', 'badWordTwo'], 
    filter: false, 
    profaneText: function (data) { 
     data.forEach(function (element, index) { 
      const str = '<span class="red">' + asterskize(element) + '</span>'; 
      $('#six').html($("#six").html().replace(element, str)); 
     }); 
    } 
}); 

このプラグインの場合は、慎重にお読みください

+0

OPのソースコードが既に不要な文字列/単語を検出して置き換えているため、単純な 'substring'の場合はやや複雑です。置換文字列を変更するだけではどうですか? – NewToJS

+0

置換文字列を変更するのは良い考えではありません。なぜなら、基本的に引数を変更することは、関数に渡されたことはまったく良いことではないからです。 – vanelizarov

+0

非常に良い点!私はあなたが何文字を置き換えたいのかを追加したという事実が好きなので、それは少ない文字で単語に付加的な利点があると思います。 – NewToJS

関連する問題