js字符串方法练习----上

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // 1、封装函数 检查字符串结尾: 例如:输入confirmEnding("He has to give me a new name", "me")返回true
        function confirmEnding(str, strPart) {
            // 获取长度
            var strLen = str.length,
                strPartLen = strPart.length;
            // 定义字符串从什么位置开始截取
            var num = strLen - strPartLen;
            // 3种方法。slice()、substring()、substr()     
            // if (strPart == str.slice(num)) {
            //     return true;
            // } else {
            //     return false;
            // }

            return (strPart === str.slice(num));

        }
        console.log(confirmEnding("He has to give me a new name", "ffme"));
        // 2、封装函数 用来反转数字 例如:输入reverseNumber(123456);返回654321
        function reverseNumber(num) {
            // 思路:字符串没有反转的方法,先转换为数组进行反转,然后将反转之后的数组转为字符串 split() reverse() join()
            var num = num + ""; // Number转化为字符串
            var arrNum = num.split("").reverse(); // 将字符串转为数组并反转
            var strNum = +(arrNum.join("")); // 将数组装换为字符串并转成Number
            return strNum;
        }
        console.log(reverseNumber(123456));
        // 3、判断两边是否对称。输入isPalindrome('hello');返回false;输入isPalindrome('madam');返回true
        function isPalindrome(str) {
            // 奇数情况:3    5     7    9   11
            // 1.5  2.5  3.5  4.5  5.5 向上取整
            // 偶数情况:len/2分两边,反转一边,判断两边是否一样
            var len = str.length;
            var num, str1;
            // 前面为偶数,后面为奇数
            len % 2 == 0 ? num = len / 2 : num = Math.ceil(len / 2);
            len % 2 == 0 ? str1 = str.slice(0, num).split("").reverse().join("") : str1 = str.slice(0, num - 1).split("").reverse().join("");
            // 进行判断
            return (str1 === str.substring(num));
        }
        console.log(isPalindrome("hello"), isPalindrome("madam"));
        // 4、写一个函数对传入的字符串输出所有子字符串组合 例如输入substrings('dog'); 返回['d', 'do', 'dog', 'o', 'og', 'g']
        function substrings(str) {
            var arr = [];
            var len = str.length
            for (var i = 0; i < len; i++) {
                for (var j = 1; j <= len - i; j++) {
                    arr.push(str.substr(i, j))
                }
            }
            return arr
        }
        console.log(substrings('dog'));
        // 5、写一个函数对传入的字符串重新按字母排序 例如 输入reorderStr('webmaster');返回 abeemrstw
        function reorderStr(str) {
            return str.split("").sort().join(""); // 转换为数组,数组进行排序,然后转换为字符串
        }
        console.log(reorderStr('webmaster'));
        // 6、写一个函数对传入的字符串中每个单词的首字母大写 输入myCap('the quick brown fox'); 返回The Quick Brown Fox
        function myCap(str) {
            var arrStr = str.split(" "); // 通过" "转换为数组
            var len = arrStr.length;
            // 遍历取每一项的首字母
            for (var i = 0; i < len; i++) {
                arrStr[i] = arrStr[i].substring(0, 1).toUpperCase() + arrStr[i].substring(1);
            }
            return arrStr.join(" ");
        }
        // 
        console.log(myCap('the quick brown fox ddd'));
        // 7、写一个函数找出传入的字符串中最长的单词 例如:输入findLongest('Web Development Tutorial'); 返回 Development
        function findLongest(str) {
            var arrFind = str.split(" "); // 将字符串转化为数组
            var len = arrFind.length;
            var maxLen = ""; // 定义变量接受最大值,初始为数组的第一项
            // 遍历数组中的每一项,进行长度大小对比
            for (var i = 0; i < len; i++) {
                if (arrFind[i].length > maxLen.length) maxLen = arrFind[i];
            }
            return maxLen;
        }
        console.log(findLongest('Web Development Tutorial f'));
        // 8、封装函数 实现toUpperCase方法 例如: 输入myUpperCase("hello"); 返回HEllo charCodeAt()方法
        function myUpperCase(str) {
            var len = str.length;
            var arrStr = str.split("");
            var arr = [];
            for (var j = 0; j < len; j++) {
                if (arrStr[j].charCodeAt() >= 97 && arrStr[j].charCodeAt() <= 122) { // 如果是小写,进入此判断
                    arr[j] = String.fromCharCode(arrStr[j].charCodeAt() - 32); // 将小写转换为大写
                } else { // 如果不是小写
                    arr[j] = arrStr[j]; // 返回本身
                }
            }
            return arr.join("");
        }
        console.log(myUpperCase("Hello"));
        // 9、封装函数 实现数组sort的方法(参考冒泡排序)例如:输入mySort([2,33,41,10,5]); 返回 [2,5,10,33,41]
        function mySort(arr) {
            var len = arr.length;
            for (var i = 0; i < len; i++) {
                for (var j = 0; j < len - 1; j++) {
                    var basket; // 定义一个箩筐,方便两个值互换
                    if (arr[j] > arr[j + 1]) {
                        basket = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = basket;
                    }
                }
            }
            return arr;
        }
        console.log(mySort([2, 33, 41, 10, 5]));
        // 10、封装函数 重复输出字符串。例如:输入repeat("abc", -2); 返回abc;输入repeat("abc", 3); 返回abcabcabc;输入repeat("abc", 2); 返回abcabc
        function repeat(str, num) {
            var str1 = ""; // 定义变量接受遍历后的结果
            // 1、判断num的值,为负或等于0时返回本身
            if (num <= 0) {
                return str;
            } else if (num > 0) {  // 为正遍历叠加他本身num遍
                for (var i = 0; i <= num - 1; i++) {
                    str1 += str;
                }
                return str1;
            }else{        // 其他情况返回它本身
                return num;
            }

        }
        console.log(repeat("abc", 6))
        // 
    </script>
</body>

</html>

以上是我练习字符串方法所写,还有很多需要精进和修改的内容,欢迎指出,谢谢!!!

猜你喜欢

转载自www.cnblogs.com/zhzq1111/p/11718905.html