строка JavaScript заменить предложение

1

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

<div id="testdiv">
This is an example of a sentence that i want to replace.
</div>

Я хочу заменить следующее:

  • " Это пример " с " я заменил "
  • " что я хочу заменить " с помощью "javascript ",

Слово "предложение" должно оставаться и не будет затронуто.

Таким образом, выход будет: I replaced the sentence using javascript

Я использовал этот код, 2-х функцию, и он работает, но я ищу кого-то, кто поможет очистить мой код или другой метод, например split или concat, если применимо? И если возможно поставить его на одну функцию с той же идеей.

function replace1 () {
      var str1 = document.getElementById("testdiv").innerHTML;
      var ptrn1 = /This is an example of a/gi;
      var rep1 = "This is an example of a";
      var newstr1 = rep1.replace(ptrn1, "that i want to replace");
      document.getElementById("testdiv").innerHTML = newstr1;
  }

  function replace2 () {
      var str2 = document.getElementById("testdiv").innerHTML;
      var ptrn2 = /that i want to replace/gi;
      var rep2 = "that i want to replace";
      var newstr2 = rep1.replace(ptrn2, "using javascript");
      document.getElementById("testdiv").innerHTML = newstr2;
  }   
  • 0
    Мне нравится .. это актуальное требование
  • 0
    str1 и str2, rep1 и rep2 не используются?
Показать ещё 5 комментариев
Теги:

8 ответов

1
Лучший ответ

function replace1 () {
  var str1 = document.getElementById("testdiv").innerText;
  var ptrn1 = /This is an example of a/gi;
  var ptrn2 = /that i want to replace/gi;
  var str2 = str1.replace(ptrn1, "I replaced the").replace(ptrn2, "using javascript");
  document.getElementById("testdiv").innerHTML = str2;
}
      
replace1()
<div id="testdiv">
This is an example of a sentence that i want to replace.
</div>
  • 0
    выводом этого является «использование предложения JavaScript с использованием JavaScript»
  • 0
    извините, я только что скопировал ваш фрагмент, и в предоставленном вами тексте была проблема, я исправил ее, она должна работать нормально
Показать ещё 4 комментария
0

Вы можете использовать это, используя split и join

скрипка

Код

function replace(){
 var notReplaced = "sentence";
 var part1 = "I replaced the ";
 var part2 = " using javascript";
 var mainString = document.getElementById("testdiv").innerHTML;
 var splitPieces = mainString.split(notReplaced);
 splitPieces[0] = part1;
 splitPieces[1] = part2;

 var result = splitPieces.join(notReplaced);
  console.log(result);

}
0

Ну вот!

function replace(totalString, keepString) {
  var newstr = totalString.split(keepString);
  var repstr1 = "I replaced the";
  var repstr2 = "using javascript";
  return [repstr1, repstr2].join(keepString);
}

var div = document.getElementById("testdiv");
div.innerHTML = replace(div.innerHTML, " sentence ");
<div id="testdiv">
  This is an example of a sentence that i want to replace.
</div>
  • 1
    это также работает и большое спасибо за это. Я ценю это, и я хотел бы, чтобы я мог ответить на все рабочие ответы, предоставленные на мой вопрос.
0

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

function replaceText(toReplace, target, string){
    toReplace.map((s, idx) => { string = string.replace(s.input, s.output) })  
    target.textContent = string
}

let toReplace = [
   { input: 'This is an example of a', output: 'I replaced the'},
   { input: 'that i want to replace', output: 'using JavaScript'}]

let elem = document.getElementById('testdiv')
let string = elem.textContent

replaceText(toReplace, elem, string)

https://jsbin.com/zaceveqiji/edit?html,js,output

  • 0
    это также работает и большое спасибо за это. Я ценю это, и я хотел бы, чтобы я мог ответить на все рабочие ответы, предоставленные на мой вопрос.
0
<!DOCTYPE html>
<HTML>
<body>
    <center>
    <h1> Sentence</h1><br>
    <div id="testdiv">
        This is an example of a sentence that i want to replace.
    </div><br>
    <input type='text' id='replace' placeholder="Replace"><br>
    <input type='text' id='with' placeholder="With"><br>
    <input type='submit' onClick="replaceSentence()">
    </center>
    <script type="text/javascript">
        function replaceSentence(){
            var val = document.getElementById('testdiv').innerHTML; 
            document.getElementById('testdiv').innerHTML = val.replace(document.getElementById('replace').value,document.getElementById('with').value);
        }
    </script>
    </body>
</HTML>
0

вы можете использовать функцию замены, такую как str.replace(...).replace(...)

function replacer() {
  var str1 = document.getElementById("testdiv");
  var newstr1 = str1.innerHTML.replace(/This is an example of a/gi, "I replaced the")
    .replace(/that i want to replace/gi, "using javascript");
  str1.innerHTML = newstr1;
}
replacer();
<div id="testdiv">
  This is an example of a sentence that i want to replace.
</div>
  • 0
    это также работает и большое спасибо за это. Я ценю это, и я хотел бы, чтобы я мог ответить на все рабочие ответы, предоставленные на мой вопрос.
  • 0
    я просто думал, что если слово «предложение» меняется каждый раз, и я хочу заменить его статическим текстом, например «СЛОВО». будет ли это возможно по моему сценарию?
Показать ещё 2 комментария
0

Вы также можете использовать группу захвата для захвата содержимого "предложения" и обернуть его необходимыми заменами:

function replaceContents () {
      var str1 = document.getElementById("testdiv").innerHTML;
      var ptrn1 = /This is an example of a(.*)that i want to replace/gi;
      var replace1 = "I replaced the";
      var replace2 = "using javascript";
      var newstr1 = str1.replace(ptrn1, replace1+"$1"+replace2);
      document.getElementById("testdiv").innerHTML = newstr1;
  }

JSFiddle: https://jsfiddle.net/7hw6o8sy/

  • 0
    это также работает и большое спасибо за это. Я ценю это, и я хотел бы, чтобы я мог ответить на все рабочие ответы, предоставленные на мой вопрос.
  • 0
    я просто думал, что если слово «предложение» меняется каждый раз, и я хочу заменить его статическим текстом, например «СЛОВО». будет ли это возможно по моему сценарию?
Показать ещё 2 комментария
0

для любого ввода:

  function replace() {
    var fixedPiece = "sentence";
    var firstPart = "I replaced the ";
    var secondPart = " using javascript";
    var wholeSentence = document.getElementById("testdiv").innerHTML;

    var index = wholeSentence.indexOf('sentence');
    var newSentence = wholeSentence.replace(wholeSentence.substr(0, index - 1), firstPart).substr(0, index + fixedPiece.length);

    var newSentence = newSentence.concat(secondPart);
    document.getElementById("testdiv").innerHTML = newSentence;

  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню