4

window.location.pathname を使用すると、「/Mobile/Evol/12-20-2011」が得られます。

Javascript を使用して、"/Mobile/Evol/" になるように "Evol/" の後のすべてを削除するにはどうすればよいですか?

4

5 に答える 5

6

substring()と関数の組み合わせを使用してlastIndexOf()、最後以降のすべてを簡単に切り取ることができ/ます。

uri    = "/Mobile/Evol/12-20-2011";
newUri = uri.substring(0, uri.lastIndexOf('/'));

@joshが「/Evol」の後にさらにディレクトリがある場合に指摘するように、これは失敗します。これを修正するには、文字列'Evol /'を検索し、その長さを部分文字列の末尾に追加します。

dir = "Evol/";
newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length);

Chromeコンソールは私にこの出力を与えます:

> uri    = "/Mobile/Evol/12-20-2011";
"/Mobile/Evol/12-20-2011"

> dir = "Evol/";
  newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length);
"/Mobile/Evol/"
于 2012-12-21T16:50:05.967 に答える
2

JavaScript文字列で「split」関数を使用するだけです。

var url = '/Mobile/Evol/12-20-2011';
var tokens = url.split('/');
var reqURL = token[0] + '/'+ token[1] ;

もちろん、URL形式は同じsome_string / some_string/some_stringである必要があります

于 2012-12-21T17:04:13.290 に答える
0
var str = window.location.pathname;
const sub = "Evol/";

var locEvol = str.indexOf(sub);
var endIdx = locEvol + sub.length;
var beginStr = str.substring(0, endIdx);
// beginStr contains the desired substring
于 2012-12-21T16:51:21.383 に答える
0

クエリとフラグメントを完全に切り離したい場合:

url.replace(/\/Evol\/[^?#]*(?:[?#].*)?$/, '/Evol')

この正規表現を分解するには:

  1. \/Evol\/はリテラル テキストに一致します"/Evol/"。は行コメントになる\ため必要であり、正規表現の他の場所では正規表現が終了します。//Evol/.../
  2. [^?#]クエリまたはフラグメント区切り文字以外に一致します
  3. (?:...)?何かをオプションにするだけです
  4. [?#].*任意の数の非空白文字が続くクエリまたはフラグメントの開始に一致します
  5. $一致が入力の最後に到達するように強制します。
于 2012-12-21T16:51:54.773 に答える