簡體   English   中英

返回不帶斜杠的字符串

[英]Return string without trailing slash

我有兩個變量:

site1 = "www.somesite.com";  
site2 = "www.somesite.com/";  

我想做這樣的事情

function someFunction(site)
{
    // If the var has a trailing slash (like site2), 
    // remove it and return the site without the trailing slash
    return no_trailing_slash_url;
}

我該怎么做呢?

嘗試這個:

function someFunction(site)     
{     
    return site.replace(/\/$/, "");
} 
function stripTrailingSlash(str) {
    if(str.substr(-1) === '/') {
        return str.substr(0, str.length - 1);
    }
    return str;
}

注意:IE8 和更早版本不支持負 substr 偏移。 如果您需要支持那些古老的瀏覽器,請改用str.length - 1

ES6 / ES2015 提供了一個 API 用於詢問字符串是否以某些內容結尾,這使得編寫更清晰、更易讀的 function 成為可能。

const stripTrailingSlash = (str) => {
    return str.endsWith('/') ?
        str.slice(0, -1) :
        str;
};

我會使用正則表達式:

function someFunction(site)
{
// if site has an end slash (like: www.example.com/),
// then remove it and return the site without the end slash
return site.replace(/\/$/, '') // Match a forward slash / at the end of the string ($)
}

不過,您需要確保變量site是一個字符串。

我知道這個問題是關於斜杠的,但我在搜索修剪斜杠時發現了這篇文章(在字符串文字的尾部和頭部),因為人們需要這個解決方案,所以我在這里發布一個:

'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'

更新

正如評論中提到的@Stephen R 一樣,如果您想在字符串文字的尾部和頭部同時刪除斜杠和反斜杠,您可以這樣寫:

'\/\\/\/I am free\\///\\\\'.replace(/^[\\/]+|[\\/]+$/g, '') // returns 'I am free'

這個片段更准確:

str.replace(/^(.+?)\/*?$/, "$1");
  1. 它不是剝離/字符串,因為它是有效的 url。
  2. 它用多個尾隨斜杠去除字符串。

基於@vdegenne 的回答......如何剝離:

單斜杠:

theString.replace(/\/$/, '');

單個或連續的尾部斜杠:

theString.replace(/\/+$/g, '');

單前導斜杠:

theString.replace(/^\//, '');

單個或連續的前導斜杠:

theString.replace(/^\/+/g, '');

單個前導和尾隨斜杠:

theString.replace(/^\/|\/$/g, '')

單個或連續的前導和尾隨斜杠:

theString.replace(/^\/+|\/+$/g, '')

要同時處理斜杠和反斜杠請將\/的實例替換為[\\/]

這里有一個小的 url 示例。

var currentUrl = location.href;

if(currentUrl.substr(-1) == '/') {
    currentUrl = currentUrl.substr(0, currentUrl.length - 1);
}

記錄新的 url

console.log(currentUrl);

我知道的最簡單的方法是:

function stripTrailingSlash(str){
   if(str.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
   return str
}

更新 ES2015 版本。

const stripTrailingSlash = str=>str.charAt(str.length-1)=="/"?str.substr(0,str.length-1):str;

然后這將檢查最后是否有 / ,如果它在那里,請將其刪除。 如果不是,它將按原樣返回您的字符串。

只有一件事我還不能評論@ThiefMaster哇,你不關心memory,你只是為了一個if而運行一個substr嗎?

修復了字符串上從零開始的索引的計算。

function stripTrailingSlash(text) {
    return text
        .split('/')
        .filter(Boolean)
        .join('/');
}

另一種解決方案。

其中一些示例比您可能需要的更復雜。 要從任何地方(前導或尾隨)刪除單個斜杠,您可以使用以下簡單的方法:

let no_trailing_slash_url = site.replace('/', '');

完整示例:

let site1 = "www.somesite.com";  
let site2 = "www.somesite.com/";  

function someFunction(site)
{
    let no_trailing_slash_url = site.replace('/', '');
    return no_trailing_slash_url;
}

console.log(someFunction(site2)); // www.somesite.com

請注意, .replace(...)返回一個字符串,它不會修改調用它的字符串。

function someFunction(site) {
  if (site.indexOf('/') > 0)
    return site.substring(0, site.indexOf('/'));
  return site;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM