web-dev-qa-db-ja.com

JavaScriptでスラッシュの後に文字列の値を取得します

私はすでに1時間以上試していますが、正しい方法を見つけることはできませんが、おそらくかなり簡単です:

次のようなものがあります:foo/bar/test.html

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

substrindexOf()を使用して実行できると思いますが、有効なソリューションは見つかりません。

94
r0skar

少なくとも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 は、音のように動作します。last文字(まあ、文字列)のインデックスを検索します文字列で、見つからない場合は-1を返します。 10回のうち9回はおそらくその戻り値(if (n !== -1))をチェックしたいでしょうが、上記では1を追加してsubstringを呼び出すため、str.substring(0)を実行することになります。文字列を返します。

Array#splitを使用

SudhirとTom Waltersは herehere をカバーしていますが、完全を期すためです:

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

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

lastIndexOf/substringソリューションは、おそらく最も効率的です(ただし、JavaScriptとパフォーマンスについては、エンジンが大幅に異なるため、互いに))が、ループでこれを数千回実行していない限り、それは重要ではなく、コードを明確にするために努力します。

203
T.J. Crowder

JQueryは必要ありません。jQueryを実行する方法はたくさんあります。たとえば:

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

MyStringには文字列が含まれます。

24
Tom Walters
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
10
kasdega

試してみてください。

 var str = "foo/bar/test.html"; 
 var tmp = str.split( "/");
 alert(tmp.pop()); 
5
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

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

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

2
Xar E Ahmer

軽い重量

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

OR

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

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

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

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

1
DaveAlger

質問の必要に応じて::

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);
  }
1
Vishal Kumar

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);

'_'を置換|| 「/」を自分のニーズに合わせて

1
S. Domeng