2014-02-17 3 views
3

У меня есть строка, как это показано ниже:строки Javascript манипуляция

var st = "ROAM-Synergy-111-222-LLX " 

Это может быть любой нет. терминов до числовых значений ..ie. его возможными форматами являются:

var st = "SSI-ROAM-Synergy-111-222-LLX "  or 
var st = "LCD-SSI-ROAM-Synergy-111-222-LLX" etc.. 

Теперь мне нужно получить только термины перед числовыми значениями в этой строке. то есть. "SSI-ROAM-Synergy" или "LCD-SSI-ROAM-Синергия"

Я использую как это:

var finalString = st.split("-"); 

но как получить только термины перед числовыми значениями.

+0

Могут ли быть также строки без каких-либо числовых значений? –

+0

нет нет .. исходная строка должна иметь некоторые числовые коды .. т.е. «111-222-LLX» или «333-444-LLX» и т. Д. – vicky

ответ

3

Вы можете использовать:

var myval = st.match(/^\D+(?=-)/)[0]; 
//=> SSI-ROAM-Synergy OR LCD-SSI-ROAM-Synergy 

Объяснение:

^ assert position at start of the string 
\D+ match any character that's not a digit [^0-9] 
Quantifier: Between one and unlimited times, as many times as possible 
(?=-) Positive Lookahead - Assert that the regex below can be matched 
- matches the character - literally 
+0

Спасибо, это отлично работает ... большое спасибо :) – vicky

+0

Вы, приветствую, рад, что это сработало. – anubhava

+0

Одна вещь, которую я заметил, - это..если я передаю эту строку, т.е. «nLight-SSI-RELOC-RTLED-Synergy-345-777-LLA« Замена ».... тогда он возвращается только« nLight-SSI-RELOC-RTLED ». Может ли проверка? – vicky

0

попробовать с помощью следующего кода

<script> 
     var yourString = "ROAM-Synergy-111-222-LLX "; 
     var output=retriveStartString(yourString); 
     alert(output); 

    function retriveStartString(inputString){ 
     var newString=""; 
     for (i=0;i<inputString.length;i++) { 
      var subStr=inputString.substr(i,1); 
      //alert(subStr); 
      if(subStr.charCodeAt(0)>=48 && subStr.charCodeAt(0)<=57){ 
       break; 
      } 
      else{ 
       newString+=subStr; 
      } 
     } 
     return newString; 
    } 
    </script> 
0
b="LCD-SSI-ROAM-Synergy-111-222-LLX".match(/^.+?-[0-9]/)[0].split("-"); 
b.pop(); 

Здесь выход b будет be ["LCD", "SSI", "ROAM", "Synergy"]

0

Вот еще один способ, используя комбинацию indexOf, match и substr.

var st = "ROAM-Synergy-111-222-LLX"; 
var lIdx = st.indexOf(st.match(/-\d/)); 
console.log(st.substr(0, (lIdx >= 0) ? lIdx : st.length)); 
Смежные вопросы