2017-05-17 172 views
0

我有下面這樣的字符串:查找單詞和分割字符串

var str = "select field1,field2,field3 from Table1"; 

在上面的字符串我想從關鍵字之前提取的所有項目,並得到輸出數組象下面這樣:

field1 
field2 
field3 

但我在我的數據變量獲得真正的價值,所以我不能分割數據變量進一步逗號。

var str = "select field1,field2,field3 from Table1"; 
 
var outputArr = []; 
 

 
var data = str.split(' ').some(function(w){return w === 'from'}); 
 
    
 
console.log(data);

+0

你想找到* *而不是*某些* ... –

回答

1
var str = "select field1,field2,field3 from Table1".split(" "); 
var data= str[str.indexOf("from")-1];//get the element that is right before the from 
console.log(data.split(",")); 

另外,有更多的高級選項:

var str = "select field1,field2,field3 from Table1".split(" "); 
var data= str[str.findIndex(el=>el.toLowerCase()==="from")-1];//get the element that is right before the from 
console.log(data.split(",")); 

請注意,有些是爲了檢查討價還價的存在,所以它返回true或false ...

+0

Upvoted的善意努力朝着幫助我的方向發展,但如果來自這樣的話:From或From或From? –

+1

@Learning然後你就可以使用findIndex和你的一些代碼... –

+0

非常感謝你對我的幫助,並請繼續幫助我:) –

1

您可以使用slice()從1到indexOf元素的值爲from,然後用逗號分隔。

var str = "select field1,field2,field3 from Table1"; 
 
var arr = str.split(' ') 
 

 
var result = arr.slice(1, arr.indexOf('fRoM'.toLowerCase()))[0].split(',') 
 
console.log(result)

+0

更好arr.indexOf(「from」) - 1而不是1 ... –

+0

Upvoted爲您的善意努力,幫助我,但如果從這裏是如此:From或From或From? –

+0

在輸入字符串中添加'toLowerCase'。 –

1

這將做的工作適合你。

var fromIndex = str.indexOf(' from '); 
/*you can put 7 statically because select is exactly 6 letters and consider a space after it*/ 
str.substring(7,fromIndex).split(','); 

更多短手語法

str.substring(7,str.indexOf(' from ')).split(','); 
+0

Upvoted爲您的慈善努力,幫助我,但如果從這樣的話:From或From或From? –

+0

'str.substring(7,str.toLowerCase()。indexOf('from'))。split(',');'這將使修復 – Hannan

1

你可以試試這個還有:

str.toLowerCase().split('select')[1].split('from')[0].replace(/ /g,'').split(',') 
+0

Upvoted爲您的善良努力來幫助我,但如果從這:From或From或From? –

+0

編輯我的答案,用於LowCase()。 –