搜索一个单词并替换它背后的一切

时间:2011-04-01 07:03:01

标签: javascript

我有一个像

这样的网址
mysite.net/home/index/page/XX

而XX是任何数字。我需要替换XX并删除可能在XX后面的所有内容。所以我想删除page/后面的所有内容,将其替换为数字。

字符串操作有很多方法http://www.w3schools.com/jsref/jsref_obj_string.asp

我知道如何执行此操作,但我不确定使用哪种方法。所以我最终获得了lastIndexOf("page/")。所以这个+1会给我一个替换字符串的起点。字符串的整个长度将是结束点。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

我没有得到你的问题,因为你可能找到了你需要的一切......

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;
}

这就是你想要的吗?

答案 1 :(得分:1)

以下代码将通过使用正则表达式来实现这一目的:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

这不是你问题的直接答案,但我解决这类问题的方法是让服务器计算一个'基本网址'(mysite.net/home/index/页面/在您的情况下),并在页面构建时将其写入js变量。

对于两个不同的ASP.NET MVC版本(在任何其他框架中都会有类似的东西),这看起来像这样:

var baseUrl = '@ViewBag.BaseUrl';

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

这有一个很大的优势,即页面JS不会开始了解URL的形成,因此如果您更改URL路由,则不会发现整个地方几乎没有破损。

至少对于ASP.NET MVC,您可以使用框架路由API在服务器端生成基本URL。