2つの変数があります。
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を提供します。これにより、よりクリーンで読みやすい関数を作成できます。
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
が文字列であることを確認する必要があります。
このスニペットはより正確です:
str.replace(/^(.+?)\/*?$/, "$1");
/
文字列は削除されません。私は質問が後続のスラッシュに関するものであることを知っていますが、スラッシュのトリミング(ヘッドスラッシュとテールスラッシュの両方)を検索するときにこの投稿を見つけました。この投稿は私の問題を解決するのに役立ちましたので、ここで両方のスラッシュをトリミングする方法文字列の開始と終了:
'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'
ここに小さなURLの例を示します。
var currentUrl = location.href;
if(currentUrl.substr(-1) == '/') {
currentUrl = currentUrl.substr(0, currentUrl.length - 1);
}
新しいURLを記録する
console.log(currentUrl);
私が知っている簡単な方法はこれです
function stipTrailingSlash(str){
if(srt.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
return str
}
これは、最後に/をチェックし、存在する場合は削除し、存在しない場合は文字列を返します
@ThiefMasterにコメントできないことの1つだけです。メモリを気にしないでください。
文字列のゼロベースのインデックスの計算を修正しました。
function stripTrailingSlash(text) {
return text
.split('/')
.filter(Boolean)
.join('/');
}
別のソリューション。