如何从网址

时间:2018-07-13 12:40:39

标签: javascript jquery angularjs

我有这个URL

https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id1=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request

在这里,我两次使用不同的参数得到sys_id。因此,我需要删除第二个&符号和其后的所有文本。

我尝试过

location.href.split('&')[2] 

我确定它不起作用。谁能提供更好的解决方案?

7 个答案:

答案 0 :(得分:5)

首先,您应该split将字符串放入数组,然后使用slice设置元素的起始索引号(在您的情况下为2),然后再次join将数组放入字符串。

详细了解这些方法JavaScript String split() MethodjQuery slice() MethodJavaScript Array join() Method

var url = 'https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request';

url = url.split("&").slice(0,2).join("&");
console.log(url);

答案 1 :(得分:3)

也许是这样的:

var url='https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request';

var first=url.indexOf('&');
var second=url.indexOf('&',first+1);
var new_url=url.substring(0,second);
console.log(new_url);

答案 2 :(得分:2)

您需要找到&sys_id的第二次出现。从那里删除所有文本。

下面是工作代码:

let url='https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request';

let str1=url.indexOf('&sys_id');
let str2=url.indexOf('&sys_id',str1+1);
console.log(url.substring(0,str2));

答案 3 :(得分:2)

var url = "https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id1=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request"
url = url.slice(0, url.indexOf('&', url.indexOf('&') + 1));
console.log(url);

尝试一下:)

答案 4 :(得分:2)

这有点冗长,但是它会处理所有重复的查询参数,无论它们在URL中的位置如何。

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, "category:ops,client:acompany,type:sometype" AS dict
)
SELECT id,
  ( SELECT 
      SPLIT(x, ':')[OFFSET(1)]
    FROM UNNEST(SPLIT(dict)) x 
    WHERE SPLIT(x, ':')[OFFSET(0)] = 'client'
    LIMIT 1
  ) client
FROM `project.dataset.table`  

答案 5 :(得分:1)

尝试一下:

var yourUrl = "https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request"
var indexOfFirstAmpersand = yourUrl.search("&"); //find index of first &
var indexOfSecondAmpersand = indexOfFirstAmpersand + yourUrl.substring((indexOfFirstAmpersand + 1)).search("&") + 1; //get index of second &
var fixedUrl = yourUrl.substring(0, indexOfSecondAmpersand)
$(".answer").text(fixedUrl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="answer">
</p>

答案 6 :(得分:1)

您可以使用String.prototype.substring方法来处理url。在下面的示例中,我创建了一个函数,该函数接受url字符串并检查重复的参数-它返回一个新字符串,其中第二个出现的字符串已删除。

var url = "https://myApp-ajj.com/sp?id=cat_item&sys_id=cf9f149cdbd25f00d080591e5e961920&sys_id=cf9f149cdbd25f00d080591e5e961920&sysp_Id=a691acd9dbdf1bc0e9619fb&sysparm_CloneTable=sc_request&sysparm_CloneTable=sc_request";

function stripDuplicateUrlParameter(url, parameterName) {
  //get the start index of the repeat occurrance
  var repeatIdx = url.lastIndexOf('sys_id');
  var prefix = url.substring(0, repeatIdx);
  var suffix = url.substring(repeatIdx);
  //remove the duplicate part from the string
  suffix = suffix.substring(suffix.indexOf('&') + 1);

  return prefix + suffix;
}

console.log(stripDuplicateUrlParameter(url));

这可以解决您的特定问题,但是如果参数出现两次以上,或者字符串的第二次出现不是紧跟在第一次之后,则将不起作用-您可能会编写更复杂的内容。

正如有人已经问过的-为什么url参数仍然要在字符串中重复?有什么办法可以解决这个问题? (因为在我看来,这个问题似乎是一个创可贴解决方案,它是 root 问题)。