Ich versuche, eine Zeichenfolge aus einer größeren Zeichenfolge zu extrahieren, wo alles zwischen einem ':' und einem ';' steht.
Aktuell
Str = 'MyLongString:StringIWant;'
Gewünschte Ausgabe
newStr = 'StringIWant'
Sie können es versuchen
var mySubString = str.substring(
str.lastIndexOf(":") + 1,
str.lastIndexOf(";")
);
Sie können dies auch versuchen:
var str = 'one:two;three';
str.split(':').pop().split(';')[0]; // returns 'two'
Verwenden Sie split()
var s = 'MyLongString:StringIWant;';
var arrStr = s.split(/[:;]/);
alert(arrStr);
arrStr
enthält die gesamte Zeichenfolge, die durch :
oder ;
begrenzt ist.
Greifen Sie mit for-loop
auf jeden String zu.
for(var i=0; i<arrStr.length; i++)
alert(arrStr[i]);
@Babasaheb Gosavi Die Antwort ist perfekt, wenn Sie einen Teil der Teilzeichenfolgen (":" und ";") haben. Wenn Sie jedoch mehrere Vorkommen haben, kann es etwas schwierig werden.
Die beste Lösung, die ich für die Arbeit an mehreren Projekten gefunden habe, ist die Verwendung von vier Methoden innerhalb eines Objekts.
Also genug reden, schauen wir uns den Code an:
var getFromBetween = {
results:[],
string:"",
getFromBetween:function (sub1,sub2) {
if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return false;
var SP = this.string.indexOf(sub1)+sub1.length;
var string1 = this.string.substr(0,SP);
var string2 = this.string.substr(SP);
var TP = string1.length + string2.indexOf(sub2);
return this.string.substring(SP,TP);
},
removeFromBetween:function (sub1,sub2) {
if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return false;
var removal = sub1+this.getFromBetween(sub1,sub2)+sub2;
this.string = this.string.replace(removal,"");
},
getAllResults:function (sub1,sub2) {
// first check to see if we do have both substrings
if(this.string.indexOf(sub1) < 0 || this.string.indexOf(sub2) < 0) return;
// find one result
var result = this.getFromBetween(sub1,sub2);
// Push it to the results array
this.results.Push(result);
// remove the most recently found one from the string
this.removeFromBetween(sub1,sub2);
// if there's more substrings
if(this.string.indexOf(sub1) > -1 && this.string.indexOf(sub2) > -1) {
this.getAllResults(sub1,sub2);
}
else return;
},
get:function (string,sub1,sub2) {
this.results = [];
this.string = string;
this.getAllResults(sub1,sub2);
return this.results;
}
};
var str = 'this is the haystack {{{0}}} {{{1}}} {{{2}}} {{{3}}} {{{4}}} some text {{{5}}} end of haystack';
var result = getFromBetween.get(str,"{{{","}}}");
console.log(result);
// returns: [0,1,2,3,4,5]
var s = 'MyLongString:StringIWant;';
/:([^;]+);/.exec(s)[1]; // StringIWant
Ich mag diese Methode:
var Str = 'MyLongString:StringIWant;';
var tmpStr = Str.match(":(.*);");
var newStr = tmpStr[1];
//newStr now contains 'StringIWant'
Ich habe @tsds übrigens nur mit der Split-Funktion verwendet.
var str = 'one:two;three';
str.split(':')[1].split(';')[0] // returns 'two'
Sie können dieses auch verwenden ...
function extractText(str,delimiter){
if (str && delimiter){
var firstIndex = str.indexOf(delimiter)+1;
var lastIndex = str.lastIndexOf(delimiter);
str = str.substring(firstIndex,lastIndex);
}
return str;
}
var quotes = document.getElementById("quotes");
// " - represents quotation mark in HTML
<div>
<div>
<span id="at">
My string is @[email protected] the "at" sign
</span>
<button onclick="document.getElementById('at').innerText = extractText(document.getElementById('at').innerText,'@')">Click</button>
</div>
<div>
<span id="quotes">
My string is "between" quotes chars
</span>
<button onclick="document.getElementById('quotes').innerText = extractText(document.getElementById('quotes').innerText,'"')">Click</button>
</div>
</div>
Versuchen Sie dies, um mit JavaScript zwischen zwei Zeichen zu wechseln.
$("button").click(function(){
var myStr = "MyLongString:StringIWant;";
var subStr = myStr.match(":(.*);");
alert(subStr[1]);
});
Aus @ entnommen Teilstring zwischen den beiden Zeichen mit jQuery suchen
Verwenden von jQuery :
get_between <- function(str, first_character, last_character) {
new_str = str.match(first_character + "(.*)" + last_character)[1].trim()
return(new_str)
}
string
my_string = 'and the thing that ! on the @ with the ^^ goes now'
Verwendungszweck :
get_between(my_string, 'that', 'now')
Ergebnis :
"! on the @ with the ^^ goes
Eine kleine Funktion, die ich erstellt habe und die die Zeichenfolge dazwischen erfassen und (optional) mehrere übereinstimmende Wörter überspringen kann, um einen bestimmten Index zu erfassen.
Wenn Sie start
auf false
setzen, wird der Anfang der Zeichenfolge verwendet, und wenn Sie end
auf false
setzen, wird das Ende der Zeichenfolge verwendet.
setze pos1
auf die Position des start
zu verwendenden Texts, 1
verwendet das erste Vorkommen von start
pos2
macht dasselbe wie pos1
, aber für end
und 1
wird das erste Vorkommen von end
erst nach start
verwendet von end
vor start
werden ignoriert.
function getStringBetween(str, start=false, end=false, pos1=1, pos2=1){
var newPos1 = 0;
var newPos2 = str.length;
if(start){
var loops = pos1;
var i = 0;
while(loops > 0){
if(i > str.length){
break;
}else if(str[i] == start[0]){
var found = 0;
for(var p = 0; p < start.length; p++){
if(str[i+p] == start[p]){
found++;
}
}
if(found >= start.length){
newPos1 = i + start.length;
loops--;
}
}
i++;
}
}
if(end){
var loops = pos2;
var i = newPos1;
while(loops > 0){
if(i > str.length){
break;
}else if(str[i] == end[0]){
var found = 0;
for(var p = 0; p < end.length; p++){
if(str[i+p] == end[p]){
found++;
}
}
if(found >= end.length){
newPos2 = i;
loops--;
}
}
i++;
}
}
var result = '';
for(var i = newPos1; i < newPos2; i++){
result += str[i];
}
return result;
}