1
votes

comment séparer le texte de départ et le texte de fin en utilisant une sous-chaîne en javascript?

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


2 commentaires

Vous voulez donc element.replace ("SERVER_UPLOAD_FILE_PATH ____ ::", ImagePath) au lieu de mettre en préfixe ImagePath à 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


3 Réponses :


-1
votes

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


3 commentaires

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



0
votes

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)


2 commentaires

@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?



0
votes

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 


2 commentaires

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) (. *)? /