2011-08-16 7 views
0

와 도움이 필요하면이 말 :자바 스크립트 - 문자열 조작

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

Regex. 문서를 참조하십시오. –

답변

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 얌 = "도넛 [$ (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]"]이 경우에, 대괄호 []의 모든 항목의 배열을 반환한다.

그냥 문자열로 하나 개의 결과를 얻을 수 있도록 같은 최초의 인덱스를 지정하는 방법 : 위 "[$25]"

편집을 반환합니다

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

: 당신은 무엇을 알고 있습니까? 나는 네가 끈의 어느 비트를 완전히 오인 했어. 이것은 당신이있어 무엇 후 :

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

귀하의 질문은 전에 [문자 후, 아무것도] 공간의 치료를 지정 잎, 당신의 문자열이 이제까지 줄 바꿈 문자를 포함, 여러 번 [..] 앞이나 뒤의 공백

다음은 모든 항목 대체 할 '공간을 [...] 공간'단일 공간은, 그것은 선행/후행 공백을 제거하는 결과를 트리밍.

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