Как удалить знак `& amp;` и весь текст после этого из url

Альтернатива в Java 8:

static final Random random = new Random(); // Or SecureRandom
static final int startChar = (int) '!';
static final int endChar = (int) '~';

static String randomString(final int maxLength) {
  final int length = random.nextInt(maxLength + 1);
  return random.ints(length, startChar, endChar + 1)
        .mapToObj((i) -> (char) i)
        .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
        .toString();
}
1
задан matiit 13 July 2018 в 15:43
поделиться

7 ответов

Во-первых, вы должны split ввести строку в массив, затем используйте slice, чтобы установить начальный индексный номер элемента, который равен 2 в вашем случае, а затем join массив снова в строку.

Подробнее об этих методах JavaScript String split () Метод , jQuery slice () Метод и JavaScript Array join () Метод

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

5
ответ дан Adeel 17 August 2018 в 12:51
поделиться

Попробуйте следующее:

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>

1
ответ дан G Dillon 17 August 2018 в 12:51
поделиться

Возможно, так:

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

3
ответ дан mscdeveloper 17 August 2018 в 12:51
поделиться

Это немного более подробный, но он обрабатывает все повторяющиеся параметры запроса независимо от их положения в URL.

function removeDuplicateQueryParams(url) {
  var params = {};
  var parsedParams = '';
  var hash = url.split('#'); // account for hashes
  var parts = hash[0].split('?');
  var origin = parts[0];
  var retURL;
  
  // iterate over all query params
  parts[1].split('&').forEach(function(param){
    // Since Objects can only have one key of the same name, this will inherently
    // filter out duplicates and keep only the latest value.
    // The key is param[0] and value is param[1].
    param = param.split('=');
    params[param[0]] = param[1];
  });
  
  Object.keys(params).forEach(function(key, ndx){
    parsedParams += (ndx === 0)
      ? '?' + key +'='+ params[key]
      : '&' + key +'='+ params[key];
  });
  
  return origin + parsedParams + (hash[1] ? '#'+hash[1] : '');
}

console.log( removeDuplicateQueryParams('http://fake.com?q1=fu&bar=fu&q1=fu&q1=diff') );
console.log( removeDuplicateQueryParams('http://fake.com?q1=fu&bar=fu&q1=fu&q1=diff#withHash') );

2
ответ дан theOneWhoKnocks 17 August 2018 в 12:51
поделиться

Вы можете манипулировать URL-адресом с помощью метода String.prototype.substring . В приведенном ниже примере я создал функцию, которая берет строку 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 дублируется в строке? Есть ли способ исправить это? (потому что вопрос, который, как мне кажется, представляет собой решение для групповой помощи, и это является основной проблемой).

1
ответ дан tommyO 17 August 2018 в 12:51
поделиться

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

Попробуйте это :)

2
ответ дан UtkarshPramodGupta 17 August 2018 в 12:51
поделиться

Вам нужно найти второе вхождение &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));

2
ответ дан VicJordan 17 August 2018 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: