JavaScriptの一部のテキストを置き換えるには、str_replace
またはその類似の代替手段を使用します。
var text = "this is some sample text that i want to replace";
var new_text = replace_in_javascript("want", "dont want", text);
document.write("new_text");
与えるべき
this is some sample text that i dont want to replace
正規表現を使用する場合、組み込みの置換メソッドと比較した場合のパフォーマンスへの影響はどうなりますか。
文字列置換に正規表現を使用すると、文字列置換を使用するよりも大幅に遅くなります。
実証されているように JSPerfで 、正規表現を作成するためのさまざまなレベルの効率がありますが、それらはすべて単純な文字列の置換よりも大幅に遅くなります。 正規表現が遅いため :
固定文字列の一致には、バックトラック、コンパイル手順、範囲、文字クラス、または正規表現エンジンの速度を低下させる他の機能のホストはありません。正規表現の一致を最適化する方法は確かにありますが、一般的なケースでは文字列へのインデックス付けに勝るものはないと思います。
JS perfページで簡単なテストを実行するために、いくつかの結果を文書化しました。
<script>
// Setup
var startString = "xxxxxxxxxabcxxxxxxabcxx";
var endStringRegEx = undefined;
var endStringString = undefined;
var endStringRegExNewStr = undefined;
var endStringRegExNew = undefined;
var endStringStoredRegEx = undefined;
var re = new RegExp("abc", "g");
</script>
<script>
// Tests
endStringRegEx = startString.replace(/abc/g, "def") // Regex
endStringString = startString.replace("abc", "def", "g") // String
endStringRegExNewStr = startString.replace(new RegExp("abc", "g"), "def"); // New Regex String
endStringRegExNew = startString.replace(new RegExp(/abc/g), "def"); // New Regexp
endStringStoredRegEx = startString.replace(re, "def") // saved regex
</script>
Chrome 68の結果は次のとおりです。
String replace: 9,936,093 operations/sec
Saved regex: 5,725,506 operations/sec
Regex: 5,529,504 operations/sec
New Regex String: 3,571,180 operations/sec
New Regex: 3,224,919 operations/sec
この回答の完全性(コメントからの引用)から、.replace
は一致した文字の最初のインスタンスのみを置き換えることに言及する価値があります。すべてのインスタンスを//g
で置き換えることのみが可能です。複数のインスタンスname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
またはさらに悪いwhile (name.includes(' ')) { name = name.replace(' ', '_') }
を置き換えると、パフォーマンスのトレードオフとコードの優雅さが悪化すると主張される可能性があります
replace
メソッドを使用します。
text = text.replace('old', 'new');
最初の引数は、明らかにあなたが探しているものです。正規表現も受け入れることができます。
notは元の文字列を変更します。新しい値のみを返します。
より簡単に:
city_name=city_name.replace(/ /gi,'_');
すべてのスペースを「_」に置き換えます!
これらのメソッドはすべて元の値を変更せず、新しい文字列を返します。
var city_name = 'Some text with spaces';
最初のスペースを_に置き換えます
city_name.replace(' ', '_'); // Returns: Some_text with spaces
正規表現を使用して、すべてのスペースを_に置き換えます。正規表現を使用する必要がある場合は、 https://regex101.com/ でテストすることをお勧めします
city_name.replace(/ /gi,'_'); // Returns: Some_text_with_spaces
すべてのスペースを_とregexなしで置き換えます。機能的な方法。
city_name.split(' ').join('_'); // Returns: Some_text_with_spaces
あなたはそのような何かを書くべきです:
var text = "this is some sample text that i want to replace";
var new_text = text.replace("want", "dont want");
document.write(new_text);
その関数は、1つだけを置換します。複数の出現を置換する必要がある場合は、この関数を試してください: http://phpjs.org/functions/str_replace:527
必ずしも。 Hans Kestingの回答をご覧ください。
city_name = city_name.replace(/ /gi,'_');
他の人があなたに与えているコードは1つの出現のみを置き換えますが、正規表現を使用するとそれらはすべて置き換えられます(@sorgitが言ったように)。すべての「欲しい」を「望まない」に置き換えるには、次のコードを使用します。
var text = "this is some sample text that i want to replace";
var new_text = text.replace(/want/g, "dont want");
document.write(new_text);
変数「new_text」は、「これは置き換えたくないサンプルテキストです」という結果になります。
正規表現のクイックガイドを入手するには、こちらにアクセスしてください。
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/str.replace()
の詳細については、こちらをご覧ください。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace
がんばろう!
hm .. replace()をチェックしましたか?
コードは次のようになります
var text = "this is some sample text that i want to replace";
var new_text = text.replace("want", "dont want");
document.write(new_text);
var new_text = text.replace("want", "dont want");
JavaScriptでは、Stringオブジェクトでreplace
メソッドを呼び出します。 "this is some sample text that i want to replace".replace("want", "dont want")
。置換された文字列を返します。
var text = "this is some sample text that i want to replace";
var new_text = text.replace("want", "dont want"); // new_text now stores the replaced string, leaving the original untouched
JavaScriptには、部分文字列を置き換えるためのStringオブジェクトのreplace()
メソッドがあります。このメソッドには2つの引数があります。最初の引数は文字列または正規表現パターン(regExpオブジェクト)で、2番目の引数は文字列または関数です。両方の文字列引数を持つreplace()
メソッドの例を以下に示します。
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
最初の引数が文字列の場合、サブストリングの最初の出現のみが上記の例のように置き換えられることに注意してください。部分文字列のすべての出現を置き換えるには、g
(グローバル)フラグを持つ正規表現を提供する必要があります。グローバルフラグを指定しない場合、最初の引数として正規表現を指定しても、最初に出現したサブストリングのみが置換されます。それで、上記の例のone
のすべての出現を置き換えましょう。
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
正規表現パターンを引用符で囲みません。regExpオブジェクトではなく文字列になります。大文字と小文字を区別しない置換を行うには、パターンで大文字と小文字を区別しないフラグi
を追加する必要があります。その場合、上記の正規表現は/one/gi
になります。ここにi
フラグが追加されていることに注意してください。
2番目の引数に関数があり、一致する場合、関数は3つの引数で渡されます。関数が取得する引数は、一致、一致の位置、および元のテキストです。一致するものを置き換える必要があるものを返す必要があります。例えば、
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
2番目の引数として関数を使用すると、置換テキストをより詳細に制御できます。
使用できます
text.replace('old', 'new')
また、1つの文字列の複数の値を一度に変更するには、たとえば#を文字列vに、_を文字列wに変更します。
text.replace(/#|_/g,function(match) {return (match=="#")? v: w;});
PHPのstr_replace
と同等のものが本当に必要な場合は、 Locutus を使用できます。 PHPのstr_replace
バージョンは、JavaScriptのString.prototype.replace
がサポートするオプションよりも多くのオプションをサポートします。タグの例:
//PHP
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
//JS with Locutus
var $bodytag = str_replace(['{body}', 'black', '<body text='{body}'>')
または配列の
//PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
//JS with Locutus
var $vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"];
var $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
また、これはforループを使用する代わりに正規表現を使用しません。正規表現を使用したくないが、単純な文字列の置換が必要な場合は、このようなものを使用できます(Locutusに基づいて)
function str_replace (search, replace, subject) {
var i = 0
var j = 0
var temp = ''
var repl = ''
var sl = 0
var fl = 0
var f = [].concat(search)
var r = [].concat(replace)
var s = subject
s = [].concat(s)
for (i = 0, sl = s.length; i < sl; i++) {
if (s[i] === '') {
continue
}
for (j = 0, fl = f.length; j < fl; j++) {
temp = s[i] + ''
repl = r[0]
s[i] = (temp).split(f[j]).join(repl)
if (typeof countObj !== 'undefined') {
countObj.value += ((temp.split(f[j])).length - 1)
}
}
}
return s[0]
}
var text = "this is some sample text that i want to replace";
var new_text = str_replace ("want", "dont want", text)
document.write(new_text)
詳細については、ソースコードを参照してください https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js
str.replace() (この質問には十分です)とregex
を使用して既に複数の回答がありますが、 str.split() と-の組み合わせを使用できます join() 一緒にstr.replace()
およびregex
より高速です。
以下に作業例を示します。
var text = "this is some sample text that i want to replace";
console.log(text.split("want").join("dont want"));
次のオプションがあります。
var text = "this is some sample text that i want to replace and this i WANT to replace as well.";
var new_text = text.replace('want', 'dont want');
// new_text is "this is some sample text that i dont want to replace and this i WANT to replace as well"
console.log(new_text)
var text = "this is some sample text that i want to replace and this i WANT to replace as well.";
var new_text = text.replace(/want/g, 'dont want');
// new_text is "this is some sample text that i dont want to replace and this i WANT to replace as well
console.log(new_text)
var text = "this is some sample text that i want to replace and this i WANT to replace as well.";
var new_text = text.replace(/want/gi, 'dont want');
// new_text is "this is some sample text that i dont want to replace and this i dont want to replace as well
console.log(new_text)
詳細-> こちら
正規表現を使用したくない場合は、この関数を使用して文字列内のすべてを置き換えることができます
function ReplaceAll(mystring, search_Word, replace_with)
{
while (mystring.includes(search_Word))
{
mystring = mystring.replace(search_Word, replace_with);
}
return mystring;
}
var mystring = ReplaceAll("Test Test", "Test", "Hello");
JSを使用するString.prototype.replace
最初の引数は正規表現パターンまたは文字列であり、2番目の引数は文字列または関数でなければなりません。
str.replace(regexp|substr, newSubStr|function);
例:
var str = 'this is some sample text that i want to replace'; var newstr = str.replace(/want/i, "dont't want"); document.write(newstr); // this is some sample text that i don't want to replace
Javascriptでは、 replace 指定された文字列のサブ文字列を新しいものに置き換えるために使用可能な関数。 使用:
var text = "this is some sample text that i want to replace";
var new_text = text.replace("want", "dont want");
console.log(new_text);
この関数で正規表現を使用することもできます。たとえば、,
のすべての出現を.
に置き換える場合。
var text = "123,123,123";
var new_text = text.replace(/,/g, ".");
console.log(new_text);
ここでg
修飾子は、使用可能なすべての一致をグローバルに一致させるために使用されます。
Reactを使用したreplace substring in a sentence
へのメソッド:
const replace_in_javascript = (oldSubStr, newSubStr, sentence) => {
let newStr = "";
let i = 0;
sentence.split(" ").forEach(obj => {
if (obj.toUpperCase() === oldSubStr.toUpperCase()) {
newStr = i === 0 ? newSubStr : newStr + " " + newSubStr;
i = i + 1;
} else {
newStr = i === 0 ? obj : newStr + " " + obj;
i = i + 1;
}
});
return newStr;
};
function str_replace($old, $new, $text)
{
return ($text+"").split($old).join($new);
}
追加のライブラリは必要ありません。