2011-07-08 11 views
1
の文字列を2つに区切って

JavaScriptアプリケーションにインポートする文字列があります。これは、このから構成されています

ここにテキスト(括弧内のいくつかのテキスト)$価格

私は3つの文字列(先頭部分、括弧、および価格)にこの文字列を分離したいと思います。

これはおそらく正規表現を含んでいることは知っていますが、それは今私が取り組むことができない獣です。誰にも何か提案はありますか?

ありがとうございます!

答えて

0

これを試してみてください:

(+ [\ \ sはW])(()+ [\ \ sはW])(\ $ \ + W)

を、テキストを言うとき、それがあると仮定すると、アルファニューメリック。句読点を許可する場合は、[\w\s]にも同様に句読点を含めてください。 (たとえばカンマ - >[\w\s,]を含む)。

1
var str = "Text here (some text in parenthesis) $33.55"; 
var matches = str.match(/(.+) (\(.+\)) (\$.+)/); 

はあなたを与える:

["Text here (some text in parenthesis) $33.55", "Text here", "(some text in parenthesis)", "$33.55"] 

matches[1]matches[2]、およびmatches[3]はあなたが望むものを含んでいます。

+0

T彼は完璧で正規表現を持っています!しかし、括弧の中にテキストがない場合、これはうまくいくのでしょうか?カッコがあることは今は保証されていません。助言がありますか? – swickblade

+0

'(\(。+ \))'を '(\(。* \))に変更するだけです。これで、 '.'は0回以上一致するので、カッコ内にテキストがない状況に一致します。括弧がなくても一致させたい場合は、それをキャプチャグループ全体に0回または1回マッチさせる '(\(。* \))? 'に変更することができます。これは、カッコで囲まれたテキストがない可能性のあるケースを処理します。 –

1
var match = "Text here (some text in parenthesis) $Price".match(/(.+)(\(.+\))(.+)/); 
match[1], match[2], match[3]; 

またはsplitを使用して(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/splitを参照してください):

var split12 = "Text here (some text in parenthesis) $Price".split('('); 
var split1 = split12[0]; 
var split23 = split12[1].split(')'); 
var split2 = '(' + split23[0] + ')'; 
var split3 = split23[1]; 

いくつかの正規表現を学ぶことがベターだと思いませんか?正規表現がなければ

http://jsfiddle.net/K9Cxe/

2

、これは動作します:

var part1 = mystring.substring(0, mystring.indexOf('(')); 
var part2 = mystring.substring(mystring.indexOf('(') + 1, mystring.indexOf(')')); 
var part3 = '$' + mystring.split('$')[1]; 

例/デモ:http://jsfiddle.net/fallen888/6EU3W/3/

更新

var part1 = null; 
var part2 = null; 
var part3 = null; 

if (mystring.indexOf('(') >= 0 && mystring.indexOf('(') > 0) { 
    part1 = mystring.substring(0, mystring.indexOf('(')); 
    part2 = mystring.substring(mystring.indexOf('(') + 1, mystring.indexOf(')')); 
    part3 = '$' + mystring.split('$')[1]; 
} 
else { 
    var parts = mystring.split('$'); 
    part1 = parts[0]; 
    part2 = '$' + parts[1]; 
} 
+0

これらはすべて素晴らしいです!しかし、括弧の成分がなく、nullの値が入っていないか入れられていないときにその中間のものをスキップしたいのですが? if文だけを実行しますか? – swickblade

+0

私は更新します... .. – Kon