2011-04-01 7 views
0

Je Hava une URL commeRechercher un mot et remplacer tout derrière

mysite.net/home/index/page/XX 

alors que XX est un nombre. Je dois remplacer XX et enlever tout ce qui pourrait être derrière XX. Donc, je voudrais enlever tout derrière page/ en le remplaçant par un nombre.

Il y a beaucoup de méthodes pour la manipulation de chaînes http://www.w3schools.com/jsref/jsref_obj_string.asp

Je sais comment réaliser cela, mais je ne suis pas sûr que les méthodes à utiliser. Donc j'ai fini par obtenir le lastIndexOf("page/"). Donc, ce +1 me donnerait le point de départ pour remplacer la chaîne. La longueur entière de la chaîne serait le point final.

Des idées?

+0

vous voulez supprimer tout jusqu'à XX, puis remplacer xx avec un autre numéro? – greggreg

+0

Oui, remplacez tout derrière la page/ –

+0

Le mot que vous recherchez est «après» plutôt que «derrière». –

Répondre

1

Le code suivant fera l'affaire, en utilisant l'expression régulière:

"mysite.net/home/index/page/XX".replace(/\/page\/.*/, '/page/123') 
0

Ce n'est pas une réponse directe à votre question, mais la façon dont je résous ce genre de problème est d'avoir le serveur calculer un 'URL de base' (monsite.net/home/index/page/ dans votre cas), et l'écrire dans une variable js au moment de la construction de la page.

Pour deux différentes versions ASP.NET MVC (il y aurait quelque chose que vous pourriez faire la même dans tout autre cadre), ressemble à ceci:

var baseUrl = '@ViewBag.BaseUrl'; 

ou

var baseUrl = '<%: ViewData["BaseUrl"] %>'; 

Cela a le grand avantage que la page JS ne commence pas à connaître la formation d'URL, donc si vous changez votre routage URL, vous ne trouvez pas de petits casse partout.

Au moins pour ASP.NET MVC, vous pouvez utiliser l'API de routage de frameworks pour générer l'URL de base côté serveur.

1

Je ne comprends pas votre problème parce que vous avez trouvé tout ce dont vous avez besoin ...

var yourURI = "mysite.net/home/index/page/XX"; 
var theDelimiter = "page/"; 
var yourNewIndex = "42"; 
var yourNewURI = null; 

var lastIndexOfDelimiter = yourURI.lastIndexOf(theDelimiter); 
if (lastIndexOfDelimiter != -1) 
{ 
    yourNewURI = yourURI.substr(0, lastIndexOfDelimiter + theDelimiter.length) + yourNewIndex; 
} 

Est-ce ce que vous voulez?

1
var url = "mysite.net/home/index/page/XX" 
return url.substr(-(url.length - (url.lastIndexOf("page/") + 5))))