153

私はすでに1時間以上試していますが、それを行う正しい方法を理解することはできませんが、おそらくかなり簡単です。

私はこのようなものを持っています:foo/bar/test.html

jQueryを使用して、最後以降のすべてを抽出したいと思います/。上記の例では、出力はになりますtest.html

substrとを使用して実行できると思いますがindexOf()、有効な解決策を見つけることができません。

4

10 に答える 10

311

少なくとも3つの方法:

正規表現:

var result = /[^/]*$/.exec("foo/bar/test.html")[0];

[^/]*...文字列()の最後に「スラッシュを含まない一連の文字を取得する」( )と表示され$ます。次に、返された一致オブジェクトにインデックスを付けて、一致した文字を取得します([0]); 一致オブジェクトでは、最初のエントリは一致した文字列全体です。キャプチャグループは必要ありません。

実例

lastIndexOfおよびを使用するsubstring

var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOf文字列内で最後に出現する文字(まあ、文字列)のインデックスを検索し、見つからない場合は-1を返します。10回のうち9回は、その戻り値()を確認したいと思うかもしれませんif (n !== -1)が、上記では1を追加して部分文字列を呼び出しているためstr.substring(0)、文字列を返すだけの結果になります。

使用するArray#split

SudhirとTomWaltersはこれをここここでカバーしていますが、完全を期すためです。

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split指定された区切り文字を使用して文字列を分割し、配列を返します。

lastIndexOf/substringソリューションはおそらく最も効率的です(ただし、エンジンは互いに根本的に異なるため、JavaScriptとパフォーマンスについては常に注意深く言う必要があります)が、これをループで何千回も実行しない限り、そうではありません。問題ではありません。コードを明確にするために努力します。

于 2011-12-04T16:01:56.233 に答える
33

jQueryは必要ありません。そのための方法はたくさんあります。たとえば、次のようになります。

var parts = myString.split('/');
var answer = parts[parts.length - 1];

myStringに文字列が含まれている場所。

于 2011-12-04T16:02:40.820 に答える
26

これを試して:

const url = "files/images/gallery/image.jpg";

console.log(url.split("/").pop());

于 2020-06-03T17:51:34.507 に答える
18
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
于 2011-12-04T16:04:27.517 に答える
11

試す;

var str = "foo / bar / test.html";
var tmp = str.split( "/");
alert(tmp.pop());
于 2011-12-04T16:01:09.620 に答える
6

文字列が適度に短くなることがわかっている場合は、次の1つのライナーを使用します...(バックスラッシュをエスケープすることを忘れないでください)

// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );

アラートがポップアップしますpicture name.jpg

于 2012-08-08T17:44:24.760 に答える
2
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

path.substring(pos, path.length()-pos) ;

これで、パス文字列にlast.htmが含まれます。

于 2014-04-14T11:11:25.703 に答える
2

軽い重さ

string.substring(start,end)

どこ

start = Required。抽出を開始する位置。最初の文字はインデックス0`にあります。

end = Optional。抽出を終了する位置(最大、ただし含まない)。省略した場合、文字列の残りの部分を抽出します。

    var string = "var1/var2/var3";

    start   = string.lastIndexOf('/');  //console.log(start); o/p:- 9
    end     = string.length;            //console.log(end);   o/p:- 14

    var string_before_last_slash = string.substring(0, start);
    console.log(string_before_last_slash);//o/p:- var1/var2

    var string_after_last_slash = string.substring(start+1, end);
    console.log(string_after_last_slash);//o/p:- var3

また

    var string_after_last_slash = string.substring(start+1);
    console.log(string_after_last_slash);//o/p:- var3
于 2016-04-11T07:33:58.743 に答える
1

Jquery:

var afterDot = value.substr(value.lastIndexOf('_') + 1);

Javascript:

var myString = 'asd/f/df/xc/asd/test.jpg'
var parts    = myString.split('/');
var answer   = parts[parts.length - 1];
console.log(answer);

'_'を置き換えます|| '/'あなた自身の必要性に

于 2016-12-05T01:34:41.280 に答える
1

質問で必要な場合::

var string1= "foo/bar/test.html";
  if(string1.contains("/"))
  {
      var string_parts = string1.split("/");
    var result = string_parts[string_parts.length - 1];
    console.log(result);
  }  

そして、URLで尋ねられた質問('='の1つの出現を求められた)::
[ http://stackoverflow.com/questions/24156535/how-to-split-a-string-after-a-particular-character-in -jquery] [1]

var string1= "Hello how are =you";
  if(string1.contains("="))
  {
      var string_parts = string1.split("=");
    var result = string_parts[string_parts.length - 1];
    console.log(result);
  }
于 2017-11-27T19:29:17.953 に答える