Angenommen, ich habe eine Zeichenfolge wie diese "hey this is StackOverflow"
und meine substring
ist "flow"
. Während der Suche nach substring
in der Zeichenfolge wird mit *indexOf*
true zurückgegeben.
Wie ich dies möchte, wenn es mit dem substring
übereinstimmt, bei dem es sich um flow handelt, wird das HTML-Tag dazwischen angehängt:
Beispiel:
Eingabe: "hey this is StackOverflow"
Ausgabe: "hey this is StackOver <'sometag'> flow <'/sometag'> "
Der folgende Code gibt den Wert true zurück, hat jedoch keine Ahnung, wie das HTML-Tag darin angehängt werden soll.
substring.indexOf(string)
Bitte helfen Sie mir dabei, es ist sehr hilfreich, da ich mit JS nicht viel bewusster bin.
3 Antworten
Versuchen Sie die Methode zum Ersetzen von Zeichenfolgen:
let str= "hey this is StackOverflow, flow"
let newStr=str.replace(/flow/g,' <h1>flow</h1>')
console.log(newStr)
Dann können Sie es in der Vorlage mit der Anweisung v-html
wie folgt rendern:
Vue.config.devtools = false;
Vue.config.productionTip = false;
new Vue({
el: '#app',
data() {
return {
str: "hey this is StackOverflow"
}
},
computed: {
newStr() {
return this.str.replace(/flow/g, '<b>flow</b>')
}
}})
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app" class="container">
<div v-html="str"></div>
<div v-html="newStr"></div>
</div>
let given_string = "hey this is StackOverflow" , search = "flow", my_tag = "Tag" , tagged = "";
if(given_string.indexOf(search) !== -1)
{
let splited = given_string.split(search);
splited.forEach(item => {
if(item !== "")
{
tagged += item + " " + "<"+ my_tag +">" + search + "</"+ my_tag +">";
}
})
}
console.log(tagged);
Was Sie brauchen, ist string.replace("sometag","<sometag>")
anstelle von substring.indexOf(string)