var str='携发C2t0r1i8p2020招';
描述
给定一个长度小于 50 且包含字母和数字的任意字符串,要求按顺序取出当中的数字和英文字母,数字需要去重,重新排列后的字符串数字在前,字母在后。
输入
需要截取的字符串(包含数字和字母)
输出
按照要求重新排列的字符串
'2018Ctrip'
1 function method(str){ 2 var arr=[]; 3 var arr1=[]; 4 var arr2=[]; 5 var arr3=[]; 6 var reg=/[\u4e00-\u9fa5]/; 7 var reg1=/\d/; 8 for(var i=0;i<str.length;i++){ 9 if(reg.test(str[i])){ 10 continue; 11 }else{ 12 arr.push(str[i]) 13 } 14 } 15 for(var i=0;i<arr.length;i++){ 16 if(arr1.indexOf(arr[i])==-1){ 17 arr1.push(arr[i]) 18 } 19 } 20 for(var i=0;i<arr1.length;i++){ 21 if(reg1.test(arr1[i])){ 22 arr2.push(arr1[i]) 23 }else{ 24 arr3.push(arr1[i]) 25 } 26 } 27 28 return arr2.concat(arr3).join(''); 29 } 30 console.log(method(str))//2018Ctrip
答案
1 function handleStr(str) { 2 var arr = str.split(''); 3 var nums = ''; 4 var words = ''; 5 6 arr.forEach(function (element) { 7 if (/\d/.test(element)) { 8 nums += element; 9 } else if (/[a-zA-Z]/.test(element) ) { 10 words += element; 11 } 12 }); 13 return uniqueStr(nums) + words; 14 } 15 function uniqueStr(str) { 16 var arr = str.split(''); 17 return arr.filter(function (element, index) { 18 return arr.indexOf(element) === index; 19 }).join(''); 20 } 21 // 测试 22 console.log(handleStr('携程C2t0r1i8p2020校招')); 23 // 2018Ctrip