J'essaie d'extraire une chaîne d'une plus grande chaîne où tout se trouve entre un ':' et un ';'.
Actuel
Str = 'MyLongString:StringIWant;'
Sortie désirée
newStr = 'StringIWant'
Tu peux essayer ça
var mySubString = str.substring(
str.lastIndexOf(":") + 1,
str.lastIndexOf(";")
);
Vous pouvez aussi essayer ceci:
var str = 'one:two;three';
str.split(':').pop().split(';')[0]; // returns 'two'
Utilisez split()
var s = 'MyLongString:StringIWant;';
var arrStr = s.split(/[:;]/);
alert(arrStr);
arrStr
contiendra toute la chaîne délimitée par :
ou ;
Donc, accédez à chaque chaîne via for-loop
for(var i=0; i<arrStr.length; i++)
alert(arrStr[i]);
@ Babasaheb Gosavi La réponse est parfaite si vous avez une occurrence des sous-chaînes (":" et ";"). mais une fois que vous avez plusieurs occurrences, cela peut devenir un peu délicat.
La meilleure solution que j'ai trouvée pour travailler sur plusieurs projets consiste à utiliser quatre méthodes à l'intérieur d'un objet.
Assez parlé, voyons le code:
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
J'aime cette méthode:
var Str = 'MyLongString:StringIWant;';
var tmpStr = Str.match(":(.*);");
var newStr = tmpStr[1];
//newStr now contains 'StringIWant'
J'ai utilisé @tsds façon mais en n'utilisant que la fonction split.
var str = 'one:two;three';
str.split(':')[1].split(';')[0] // returns 'two'
Vous pouvez aussi utiliser celui-ci ...
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 @between@ 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>
Essayez ceci pour obtenir une sous-chaîne entre deux caractères en utilisant javascript.
$("button").click(function(){
var myStr = "MyLongString:StringIWant;";
var subStr = myStr.match(":(.*);");
alert(subStr[1]);
});
Extrait de @ Trouvez une sous-chaîne entre les deux caractères avec jQuery
Utiliser jQuery :
get_between <- function(str, first_character, last_character) {
new_str = str.match(first_character + "(.*)" + last_character)[1].trim()
return(new_str)
}
chaîne
my_string = 'and the thing that ! on the @ with the ^^ goes now'
utilisation :
get_between(my_string, 'that', 'now')
résultat :
"! on the @ with the ^^ goes
Une petite fonction que j'ai créée qui peut saisir la chaîne entre, et peut (facultativement) ignorer un certain nombre de mots correspondants pour saisir un index spécifique.
De plus, définir start
sur false
utilisera le début de la chaîne et définir end
sur false
utilisera la fin de la chaîne.
réglez pos1
sur la position du texte start
que vous souhaitez utiliser, 1
utilisera la première occurrence de start
pos2
fait la même chose que pos1
, mais pour end
et 1
utilisera la première occurrence de end
seulement après start
, des occurrences de end
avant start
sont ignorés.
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;
}