J'ai des chaînes qui ont le texte au début et à la fin mais entre les deux il y a une image src
Voici les différents types de chaînes donnés ci-dessous
ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png Excuse ME this wa the url 5e2650c2-728c-40af-99a4-eb100c432091.png click here to view details ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png 68d37b07-d694-47af-a16a-8adbe400ac67.png Hector where are you Hello world how are you
J'ai essayé ce code
ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png 5e2650c2-728c-40af-99a4-eb100c432091.png ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png 68d37b07-d694-47af-a16a-8adbe400ac67.png
mais il me donne le résultat suivant
var element = result.find(a =>a.includes("____SERVER_UPLOAD_END"));
var res = element.substring(element.lastIndexOf(":") + 1,element.lastIndexOf("____SERVER_UPLOAD_END"));
console.log(res)
Le résultat attendu est
SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END Execuse Me this was the url SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4-eb100c432091.png____SERVER_UPLOAD_END click here to view details SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END SERVER_UPLOAD_FILE_PATH____::68d37b07-d694-47af-a16a-8adbe400ac67.png____SERVER_UPLOAD_END Hector where are you Hello world how are you
comment obtenir également du texte qui vient au début et à la fin du chemin img et aussi entre le chemin img?
Toute aide serait appréciée grâce à Avancer
3 Réponses :
Si url est SERVER_UPLOAD_FILE_PATH ____ :: 5e2650c2-728c-40af-99a4eb100c432091.png ____ SERVER_UPLOAD_END cliquez ici est la valeur de la chaîne entière, j'essaierais ceci:
var element = "url is SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4eb100c432091.png____SERVER_UPLOAD_END click here";
var result = element.substring(
element.lastIndexOf(":") + 1,
element.lastIndexOf("____SERVER_UPLOAD_END click here")
);
console.log(result);
Le résultat sera 5e2650c2-728c-40af-99a4eb100c432091.png
mon résultat attendu est le suivant: - l'url est web.com/5e2650c2-728c -40af-99a4-eb100c432091.png cliquez ici
Cela échouera également s'il y a un : dans le texte après le fichier
web. com / ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png Execuse Me "> Cliquez ici comment supprimer Excuse Me de src
Comme ceci:
const str = `SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END Execuse Me
this was the url SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4-eb100c432091.png____SERVER_UPLOAD_END click here to view details
SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END
SERVER_UPLOAD_FILE_PATH____::68d37b07-d694-47af-a16a-8adbe400ac67.png____SERVER_UPLOAD_END Hector where are you Hello world how are you`
const texts = str.split("\n")
.map(line => {
[, text1, url, text2] = line.match(/(.*?)?(?:SERVER_UPLOAD_FILE_PATH____::)(.*?)(?:____SERVER_UPLOAD_END)(.*)?/);
return `${text1 || ""}<img src="https://www.web.com/${url}" alt="image" />${text2 ||""}`
})
console.log(texts)
regex pourrait être utilisé, mais le remplacement ci-dessus est plus simple à lire car vous supprimez simplement les indicateurs de chemin de fichier
const str = `SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END Execuse Me
this was the url SERVER_UPLOAD_FILE_PATH____::5e2650c2-728c-40af-99a4-eb100c432091.png____SERVER_UPLOAD_END click here to view details
SERVER_UPLOAD_FILE_PATH____::ad4d7360-9c6c-44fa-bcbb-0db7e671e036.png____SERVER_UPLOAD_END
SERVER_UPLOAD_FILE_PATH____::68d37b07-d694-47af-a16a-8adbe400ac67.png____SERVER_UPLOAD_END Hector where are you Hello world how are you`
const texts = str.split("\n")
.map(line => line
.replace("SERVER_UPLOAD_FILE_PATH____::",`<img src="https://www.web.com/`)
.replace("____SERVER_UPLOAD_END",'" alt="image"/>'))
console.log(texts)
@Umair j'ai ajouté la balise d'image
Avez-vous besoin d'un lien avec le deuxième texte du lien? Et s'il n'y a pas de deuxième texte?
En utilisant des expressions régulières et des groupes délimités par () , vous pouvez accéder à différentes parties de la chaîne plus élégantes. Ainsi:
regex=/(.*)SERVER_UPLOAD_FILE_PATH____::([^_]*)____SERVER_UPLOAD_END(.*)/ var result = regex.exec(a) // result[0] contains all matched string // result[1] contains all before SERVER_UPLOAD // result[2] contains the name of the file // result[3] contains all after UPLOAD_END
Veuillez cliquer sur modifier, puis sur [<>] éditeur d'extraits et montrer comment votre code est exécuté. exec n'est pas si simple à gérer - Dans ce cas, supprimer simplement les indicateurs de chemin est plus simple que d'assembler les résultats d'un exec
Voir ma version. J'utilise /(.*?)?(?:SERVER_UPLOAD_FILE_PATH____::)(.*?)(?:____SERVER_U PLOAD_END) (. *)? /
Vous voulez donc
element.replace ("SERVER_UPLOAD_FILE_PATH ____ ::", ImagePath)au lieu de mettre en préfixeImagePathà la chaîne entière?je veux dire qu'au début de la chaîne, il doit y avoir le texte et après cette URL est concaténée avec le chemin img et à la fin le texte de la chaîne