Javascript - 如果 URL 字符串的最后一个字符是“+”然后删除它...如何?

Posted

技术标签:

【中文标题】Javascript - 如果 URL 字符串的最后一个字符是“+”然后删除它...如何?【英文标题】:Javascript - If Last Character of a URL string is "+" then remove it...How? 【发布时间】:2011-09-09 08:40:00 【问题描述】:

这是现有问题的延续。 javascript - Goto URL based on Drop Down Selections (continued!)

我正在使用下拉选择来允许我的用户构建一个 URL,然后点击“Go”转到它。

有没有办法添加一个额外的功能,在去之前检查 URL?

我的 URL 有时包含“+”字符,如果它是 URL 中的最后一个字符,我需要将其删除。 所以它基本上需要是“如果最后一个字符是+,则删除它”

这是我的代码:

$(window).load(function()
    $('form').submit(function(e)
        window.location.href = 
            $('#dd0').val() +
            $('#dd1').val()+
            $('#dd2').val()+
            $('#dd3').val();
        e.preventDefault();
    );
);

【问题讨论】:

***.com/questions/280634/endswith-in-javascript/… 几乎完全相同 【参考方案1】:

使用str.endsWith("str")找到另一个解决方案

var str = "Hello this is test+";
if(str.endsWith("+")) 
  str = str.slice(0,-1);
  console.log(str)

else 
  console.log(str);

Matt Ball 的 Replace 方法看起来也不错。我已经更新它以处理末尾有多个 + 的情况。

let str = "hello+++++++++";
str = str.replace(/\++$/, '');
console.log(str);

【讨论】:

【参考方案2】:

function removeLastPlus(str) 
  if (str.slice(-1) == '+') 
    return str.slice(0, -1);  
  
  return str;

【讨论】:

【参考方案3】:
$(window).load(function()
    $('form').submit(function(e)
        var newUrl = $('#dd0').val() +
            $('#dd1').val()+
            $('#dd2').val()+
            $('#dd3').val();
        newUrl = newUrl.replace(/\+$/, '');
        window.location.href = newUrl;
        e.preventDefault();
    );
);

只是看起来更容易。

【讨论】:

【参考方案4】:
function removeLastPlus (myUrl)

    if (myUrl.substring(myUrl.length-1) == "+")
    
        myUrl = myUrl.substring(0, myUrl.length-1);
    

    return myUrl;


$(window).load(function()
    $('form').submit(function(e)
        var newUrl = $('#dd0').val() +
            $('#dd1').val()+
            $('#dd2').val()+
            $('#dd3').val();
        newUrl = removeLastPlus(newUrl);
        window.location.href = newUrl;
        e.preventDefault();
    );
);

【讨论】:

如果 URL 以多个加号结尾,比如连续三个? @maerics OP 似乎没有询问这个案例。 只是扮演魔鬼的拥护者,从阅读 OP 的代码中我想到“dd[0-3]”只能包含加号,但我想我只是很难 =) 我不完全确定如何将此代码与我的代码合并。有可能吗? 您是要检查每一个还是一起检查所有这些? $('#dd0').val() + $('#dd1').val()+ $('#dd2').val()+ $('#dd3').val()【参考方案5】:
<script type="text/javascript">
  function truncate_plus(input_string) 
    if(input_string.substr(input_string.length - 1, 1) == '+') 
      return input_string.substr(0, input_string.length - 1);
    
    else
    
      return input_string;
    
  
</script>

【讨论】:

为什么使用substr() 而不是charAt() 来检索字符串的最后一个字符?【参考方案6】:
var url = /* whatever */;

url = url.replace(/\+$/, '');

例如,

> 'foobar+'.replace(/\+$/, '');
  "foobar"

【讨论】:

以上是关于Javascript - 如果 URL 字符串的最后一个字符是“+”然后删除它...如何?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 如果 URL 字符串的最后一个字符是“+”然后删除它...如何?

JQuery:将 GET URL 转换为 POST

关于编码

如果字符串在任何地方包含url,则使用javascript将其转换为链接[重复]

使用Javascript从URL字符串获取端口[重复]

使用Javascript从URL字符串获取端口[重复]