2017-05-17 126 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()。 –