web-dev-qa-db-ja.com

指定された文字の前の部分文字列を取得する方法jQueryまたはJavaScript

「、」コンマの前にすべてを抽出しようとしています。 JavaScriptやjQueryでこれを行うにはどうすればよいですか?私はこれを試してみましたそして働かない。

1345 albany street, Bellevue WA 42344

私はただ番地をつかみたいだけです。

var streetaddress= substr(addy, 0, index(addy, '.')); 
190
Anjana Sharma
var streetaddress= addy.substr(0, addy.indexOf(',')); 

それぞれの方法が何をするのかについての決定的な情報を得るには最適な場所ではありませんが( mozilla開発者ネットワーク がそのためには良いです) w3schools.com は、構文を紹介するのに役立ちます。

329
wheresrhys
var streetaddress = addy.split(',')[0];
129
user3336882

これを試して:

streetaddress.substring(0, streetaddress.indexOf(','));
26
Mikey G
//split string into an array and grab the first item

var streetaddress = addy.split(',')[0];

また、読みやすくするために、キャメルケース(streetAddress)を使って変数に名前を付けることをお勧めします。

14
Miles Florence

あなたがそれが短いのが好きなら、単に RegExp を使ってください:

var streetAddress = /[^,]*/.exec(addy)[0];
13
flu

david Gの答えとほとんど同じですが、匿名関数は含まれていません。

s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));

この場合、substrの2番目の引数は長さであり、サブストリングは0から始まっていることがわかります。

一番上の答えは一般的な解決策ではありません。文字列に探している文字が含まれていない場合、望ましくない動作が起こるためです。

一般的な場合に正しい振る舞いをしたい場合は、トップの答えではなく、この方法またはDavid Gの方法を使用してください。

正規表現と分割メソッドも動作しますが、この特定の問題のためにやや遅く/やり過ぎるかもしれません。

8
m a
var streetaddress = addy.substr(0, addy.indexOf('.')); 

JavaScriptチュートリアル 、特に 文字列関数に関する部分 を読んでください。 - ))

5
max.weller

shift() を使うこともできます。

var streetaddress = addy.split(',').shift();

MDN Web Docsによると、

shift()メソッドは、配列からfirst要素を削除し、その削除された要素を返します。このメソッドは配列の長さを変更します。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

5
Grant Miller
var newString = string.substr(0,string.indexOf(','));
4
Gaurav

検索文字が含まれていない場合にそのままの元の文字列を返したい場合は、無名関数(クロージャ)を使用できます。

var streetaddress=(function(s){var i=s.indexOf(',');
   return i==-1 ? s : s.substr(0,i);})(addy);

これはより一般的にすることができます。

var streetaddress=(function(s,c){var i=s.indexOf(c);
   return i==-1 ? s : s.substr(0,i);})(addy,',');
4
David G