2017-05-25 67 views
1

我有喜欢的课程代码列表:jQuery的 - 当整数或空间中发现拆分(即拆分课程代码)

CRS100 
CRS301 
CRS332 
...etc. 

我想拆分这些课程代码,这样我可以做这样的事情:

<a data-courseProgram="CRS" data-courseCode="301">CRS301</a> 

任何帮助,将不胜感激:)

+0

都是ids 6的长度吗? –

+0

是的,6个字符。尽管如此,也能很好地解释课程代码之间的空白。例如,考虑'CRS 301'。 – ymdahi

回答

3

所有你想要做的分割标识加入一半的前三个字母是一致的,剩下的就是ID,所以你可以做这样的事情,

var s = 'CRS332'; //course ID 
var i = s.length/2; //split the string into half 
var course = s.substr(0, i); //gives you CRS 
var courseId = s.substr(i); //gives you 332 

有一个更优雅的解决方案,你也可以使用正则表达式和字符串分割成两个部分,像

var str = 'CRS332'; 
var splitId = str.match(/.{1,3}/g); 
console.log(splitId); //outputs ['CRS', '332']; 

现在,您可以像使用分别splitId[0]splitId[1]上面的一个。


如果你有一个像CRS332和CRS 332(中间有空格),可以使用下面的代码(我刚写和小提琴测试,可能会错过,你必须处理极端情况)

ID的组合
//all ids, and create a new container to push the splitted ids 
var dir = ['CRS 332', 'CRS447'], newDir = []; 

//loop all the course ids 
for(var i = 0, l = dir.length; i < l; i++) { 

    //if space exists, split it 
    if(dir[i].indexOf(' ') !== -1) { 
    //space exists in the string, do a normal split 
    newDir.push(dir[i].split(' ')); 
    } else { 
    //if no space, split it in half 
    newDir.push(dir[i].match(/.{1,3}/g)); 
    } 
} 

console.log(newDir); 
+0

另外,你的问题还不清楚,如果你说你的课程编号也可以有空格,只要放入并且如果条件检查字符串的长度,如果它超过6,这很简单,你可以使用''YOUR STRING'.split('')'它会为你分割 –

+0

感谢您的详细解答,队友! – ymdahi