导航

字符串

Posted on 2018-04-02 20:01  小飞博客  阅读(147)  评论(0编辑  收藏  举报

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