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