2011-08-16 21 views
0

で必要なヘルプは、あなたが持っていると言う:はJavaScript - 文字列操作

var foo = "donut [$25]" 

あなたが間と[ ]を含め、すべてを削除するために実行する必要がありますどのような。

コードを実行した後、foo = "donut"が表示されます。

これまでのところ、私は以下のソリューションのほとんどを試しましたが、それらはすべて何もせず、クラッシュします。 多分それは私のコードで何かだ、下記を参照してください。

$('select').change(function() { OnSuccess(mydata); }); 


    function OnSuccess(data) { 

     var total = 0; 

     $('select').each(function() { 


      var sov = parseInt($(this).find('option:selected').attr('value')) || 0; //Selected option value 

      var sop; //Selected Option Price 


      for (i = 0; i <= data.length; i++) { 


       if (data[i].partid == sov) { 

        sop = data[i].price; 
        total += sop; 
        $('#totalprice').html(total); 
        break; 
       } 


      }; 








      //debugger; 
      $(this).find('option').each(function() { 

       // $(this).append('<span></span>'); 

       var uov = parseInt($(this).attr('value')) || 0; //Unselected option value 

       var uop; //Unselected Option Price 


       for (d = 0; d <= data.length; d++) { 


        if (data[d].partid == uov) { 

         uop = data[d].price; 
         break; 
        } 

       } 
       //debugger; 
       var newtext = uop - sop; 
       //{ newtext = "" }; 
       //if (newtext = 0) { newtext.toString; newtext = ""; }; 


       //debugger; 
       var xtext = $(this).text().toString(); 

       //if (xtext.match(/\[.*\]/) != null) { 
        xtext.replace(/\s*\[[\s\S]*?\]\s*/g, '').trim(); 

       //} 

       //    var temp = xtext.split('[')[0]; 
       //    var temp2 = xtext.split(']')[1]; 

       //    resultx = temp + temp2; 

       if (newtext != 0) { 


        //xtext.replace(/[.*?]/, ""); 

        $(this).attr("text", xtext + " " + "[" + "$" + newtext + "]"); 
       }; 





      }); 







     }); 


    }; 
+2

正規表現。ドキュメントを参照してください。 –

答えて

0

方法について簡単に。

var yum = "donut[$25]"; 
print(yum.substr(0, yum.indexOf("["))); 

>>donut 
+0

']'の後ろに文字がある文字列に対しては、これは機能しません。 –

+0

''ドーナツ[$ 34] weqweqwe'は、構造化されたデータのように思われる最初の '' [''で切り詰めて動作します。 –

+0

[..]を含めてすべてを削除したいだけでした。あなたのメソッドは]の後ろのすべてを削除します。 –

1
また

var temp = foo.split('[')[0]; 
var temp2 = foo.split(']')[1]; 

foo = temp + temp2; 
3
ジョン・マーティンが指摘したようにあなたはまた、正規表現を使用することができます

するvar YUM = "ドーナツ[$ 25]"; yum.replace(/[.*?]/、 ""); // "ドーナツ"を返します

0

var begin = foo.search( "["); var end = foo.search( "]"); var result = foo.substr(0、begin)+ foo.substr(end + 1); //前後に何かを組み合わせる

いいでしょうか?

1

正規表現(RegExp()オブジェクト)を使用して文字列を一致させることができます。

var foo = "donut[$25]"; 
foo.match(/\[.*\]/); 

上記は、この場合["[$25]"]で、[角括弧]内のすべての項目の配列を返します。

ちょうどそうのような最初のインデックスを指定し、文字列として1件の結果を得るために:あなたは何を知っている:上記

foo.match(/\[.*\]/)[0]; 

"[$25]"

編集を返しますか?私はあなたの後ろの文字列のどのビットを完全に誤解しました。これは、あなたがしているものの後:

var foo = "donut[$25]"; 
foo.match(/\w*/)[0]; 
0

ご質問は前に[文字の後、何かを]スペースの治療を未指定のままに、あなたの文字列がこれまでに改行文字が含まれています、の複数の発生[..]先頭または末尾のスペース。

以下は、単一のスペースで「[...] スペーススペース」の出現をすべて置き換えます、それはどんな一流/末尾のスペースを削除した結果をトリミング。

v.replace (/\s*\[[\s\S]*?\]\s*/g, ' ').trim();