JavaScript字符串练习
题目:
预备代码:
- // 自定义输出
- var log = function () {
- console.log.apply(this, arguments);
- };
- // ======
- // 测试
- // ======
- //
- // 定义用于测试的函数
- // ensure 接受两个参数
- // condition 是 bool, 如果为 false, 则输出 message
- // 否则, 不做任何处理
- var ensure = function(condition, message) {
- // 在条件不成立的时候, 输出 message
- if(!condition) {
- log('*** 测试失败:', message)
- }
- };
题目代码:
- // 找出字符串中出现次数最多的字母:
- function func(str) {
- var arr = {};
- // 把每个字母和其对应出现的次数存到对象(字典)中
- for (var i = 0; i < str.length; i++) {
- if (arr[str[i]] === undefined){
- arr[str[i]] = 1
- }
- else{
- arr[str[i]] += 1
- }
- }
- var max = 0;
- var chart = "";
- for(var s in arr){
- var num = arr[s];
- if(num>max){
- max = num;
- chart = s;
- }
- }
- log(arr);
- log(chart.toString()+max.toString());
- res = chart.toString()+max.toString();
- return res
- }
- result = func("WelcomeToQianfeng");
- // 分割单词
- var str2={};
- function word(str1){
- for(var i=1;i<str1.length;i++){
- // 思路: 在第一个字母之后 如果发现有大写字母后面是小写字母 就把这个大写字母换成空格和这个大写字母
- // 检测是否为大写字母
- if(/[A-Z]/g.test(str1[i])){
- // 检测是否是小写字母
- if(/[a-z]/g.test(str1[i-1])){
- str1=str1.replace(str1[i], " "+str1[i]);
- }
- }
- }
- // str2是str1的子串(str1第一个字符之后的子串)
- str2=str1.substring(1);
- log(str1[0]+str2.toLowerCase());
- return str1[0]+str2.toLowerCase();
- }
- result = word("HelloMyWorld");
- // 单词逆序
- // Welome to Beijing -> Beijing to Welcome
- // 思路: 先将字符串分割成一个个的词,然后将这些词存入数组中并逆序,最后连接起来即可
- var arr=[];
- var str3="Welome to Beijing";
- arr=str3.split(" ");
- var str4=arr.reverse();
- var res = str4.join(" ");
- log(arr);
- log(res);
- // 作业 1
- // 字符串s1和字符串s2 但 s2 的长度是 1 返回 s2 在 s1 中的下标, 从 0 开始, 如果不存在则返回 -1
- var find = function(s1, s2) {
- var len = s1.length;
- if(s1.includes(s2)) {
- for (var i = 0; i < len; i++) {
- var str = s1[i];
- if (str === s2) {
- //log("i 的值:",i)
- return i
- }
- }
- }
- // log(-1)
- return -1
- };
- // 作业2-1
- // 返回字符串的小写形式的函数 注意, 这里假设了字符串全是大写字母
- // 这里是两个字符串, 包含了大写字母和小写字母
- var lower = 'abcdefghijklmnopqrstuvwxyz';
- var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var lowercase = function(s) {
- // 初始化一个空字符串
- var result = "";
- for (var i = 0; i < s.length; i++) {
- // 注意, 这个 find 是你要实现的函数
- var index = find(upper, s[i]);
- // 字符串可以用加号拼接, 不明白可以 log 一下
- result += lower[index];
- }
- return result;
- };
- // var test_lowercase = function() {
- // ensure(lowercase('SDEW') === 'sdew','测试1失败')
- // };
- // test_lowercase();
- // 作业 2-2
- // 定义一个函数 参数是一个字符串 返回大写后的字符串 注意字符串全是小写字母
- var lower = 'abcdefghijklmnopqrstuvwxyz';
- var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var uppercase = function(s) {
- var result = "";
- for (var i = 0; i < s.length; i++) {
- var index = find(lower,s[i]);
- result += upper[index]
- }
- return result
- };
- // var test_uppercase = function() {
- // ensure(uppercase('sdwt') === 'SDWT','测试1失败')
- // };
- // test_uppercase();
- // 作业 3
- // 实现 lowercase1 它能正确处理带 小写字母 的字符串s 返回 小写字母 的字符串
- var lower = 'abcdefghijklmnopqrstuvwxyz';
- var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var lowercase1 = function(s) {
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- if (upper.includes(s[i])) {
- var index = find(upper,s[i]);
- result += lower[index]
- //log(result)
- }else {
- result += s[i]
- //log(result)
- }
- }
- return result
- };
- // var test_lowercase1 = function() {
- // ensure(lowercase1('dadEG') === 'dadeg','测试1失败');
- // ensure(lowercase1('wWedaaLo') === 'wwedaalo','测试2失败');
- // };
- // test_lowercase1();
- // 作业 4
- // 实现 uppercase1 它能正确处理带 大写字母 的字符串 返回 大写字母 的字符串
- var uppercase1 = function(s) {
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- if (lower.includes(s[i])) {
- var index = find(lower,s[i]);
- result += upper[index];
- // log(result)
- }else {
- result += s[i];
- // log(result)
- }
- }
- return result
- };
- // var test_uppercase1 = function() {
- // ensure(uppercase1('dadEG') === 'DADEG','测试1失败');
- // ensure(uppercase1('wWedaaLo') === 'WWEDAALO','测试2失败');
- // };
- // test_uppercase1();
- // 作业 5
- // 实现一个叫 凯撒加密 的加密算法, 描述如下:
- // 对于一个字符串, 整体移位, 就是加密
- // 以右移 1 位为例 原始信息 'afz' 会被加密为 'bga'
- // 实现 encode1 函数, 把明文加密成密码并返回 右移 1 位
- // 注意, 假设字符串一定只包含小写字符
- var lower = 'abcdefghijklmnopqrstuvwxyz';
- var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var encode1 = function(s) {
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- var sl = s[i];
- var index = find(lower,s[i]);
- if (s[i] === 'z') {
- result += lower[0]
- }else {
- result += lower[index+1]
- }
- }
- return result
- };
- // var test_encode1 = function() {
- // ensure(encode1('afz') === 'bga', "encode1测试1");
- // ensure(encode1('crp') === 'dsq', "encode1测试2");
- // };
- // test_encode1();
- // 作业 6
- // 实现 decode1 函数, 把作业 5 加密的密码解密为明文并返回
- var decode1 = function(s) {
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- var index = find(lower,s[i]);
- if (s[i] === lower[0]) {
- result += lower[25]
- }else {
- result += lower[index-1]
- }
- }
- return result
- };
- // var test_decode1 = function() {
- // ensure(decode1('bga') === 'afz', "decode1测试1");
- // ensure(decode1('dsq') ==='crp', "decode1测试2");
- // };
- // test_decode1();
- // 作业 7
- // 实现 encode2 相比encode1多了一个参数 shift 表示移的位移
- var lower = 'abcdefghijklmnopqrstuvwxyz';
- var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- var encode2 = function(s, shift) {
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- var sl = s[i];
- var index = find(lower,s[i]);
- if (index + shift >= 26) {
- result += lower[index + shift - 26]
- }else {
- result += lower[index + shift]
- }
- }
- return result
- };
- // var test_encode2 = function() {
- // ensure(encode2('afz',1) === 'bga', "encode2测试1");
- // ensure(encode2('mxc',5) === 'rch', "encode2测试2");
- // };
- // test_encode2();
- // 作业 8
- // 实现 decode2 相比decode1多了一个参数 shift 表示移的位数
- var decode2 = function(s, shift) {
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- var index = find(lower,s[i]);
- if (index - shift < 0) {
- result += lower[index - shift + 26]
- }else {
- result += lower[index - shift]
- }
- }
- return result
- };
- // var test_decode2 = function() {
- // ensure(decode2('afz',1) === 'zey', "decode2测试1");
- // ensure(decode2('mxc',5) === 'hsx', "decode2测试2");
- // };
- // test_decode2();
- /*
- 作业 9
- 实现 encode3
- 多了一个参数 shift 表示移的位数
- 如果 s 中包含了不是字母的字符, 比如空格或者其他符号, 则对这个字符不做处理保留原样
- */
- var encode3 = function(s, shift) {
- var str = lowercase1(s);
- var result = "";
- var len = s.length;
- for (var i = 0; i < len; i++) {
- if (lower.includes(str[i])) {
- result += encode2(str[i],shift)
- }
- else {
- result += str[i]
- }
- }
- return result
- };
- // var test_encode3 = function() {
- // ensure(encode3('5465WD4afz',1) === '5465xe4bga', "encode3测试1");
- // ensure(encode3(' 5~m@365!xc',5) === ' 5~r@365!ch', "encode3测试2");
- // };
- // test_encode3();
- /*
- 作业 10
- 实现 decode3
- 多了一个参数 shift 表示移的位数
- 如果 s 中包含了不是字母的字符, 比如空格或者其他符号, 则对这个字符不做处理保留原样
- */
- var decode3 = function(s, shift) {
- var str = lowercase1(s);
- var result = "";
- var len = str.length;
- for (var i = 0; i < len; i++) {
- if (lower.includes(str[i])) {
- result += decode2(str[i],shift)
- }
- else {
- result += str[i]
- }
- }
- return result
- };
- // var test_decode3 = function() {
- // ensure(decode3('W2玩儿3af$%(SD)z',1) === 'v2玩儿3ze$%(rc)y', "decode3测试1");
- // ensure(decode3('mW嗲2+*/.,xDW3c',5) === 'hr嗲2+*/.,syr3x', "decode3测试2");
- // };
- // test_decode3();
JavaScript字符串练习的更多相关文章
- JavaScript 字符串实用常操纪要
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- JavaScript 字符串操作
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- JavaScript 字符串常用操作
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象 String 对象用于处理已有的字符块. JavaScript 字符串 一个字符串用于存储一系列字符就像 "John Doe". ...
- IE JavaScript字符串转换成Date后出现NaN错误
参考的博文:http://blog.csdn.net/zhu7478848/article/details/53388582 在IE浏览器下, JavaScript字符串转换成Date后会出现NaN错 ...
- JavaScript 字符串常用操作纪要
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- JavaScript字符串插入、删除、替换函数
JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...
- javascript 字符串方法传参
javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: ' <td align="left"><input type= ...
- JavaScript 字符串(String)对象
String 对象用于处理已有的字符块. JavaScript 字符串 一个字符串用于存储一系列字符就像 "John Doe". 一个字符串可以使用单引号或双引号: 实例 var ...
- step_by_step_记录一个javascript字符串处理问题
记录一个javascript字符串处理的问题 这一天下班,技术QQ群里的大神提出了一个问题,带着问题去思考. ? '---9890.999008-555555-55555555----' 对于这样的字 ...
随机推荐
- jquery学习1之对juery对象的细节操作1
jquery是前台动态页面开发的一个很重要的工具. 一:jquery对象中length属性和size()方法 var a=$("a").length; var b= ...
- Vue中的“混合”——mixins使用方法
混合是一种灵活的分布式复用 Vue 组件的方式.混合对象可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项.当组件和混合对象含有同名选项时,这些选项将以恰当的方式混 ...
- device public set
backgroud: our dvertiser provide on device list of idfa to show ad to target audience,however none ...
- 走进windows编程的世界-----消息处理函数(1)
Win32消息机制 过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束. 事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...
- Centos7修改文件夹权限和用户名用户组
Linux系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限.根据我自己遇到的情况,对这类问题做一个小结.在命令行使用命令“ll”或者“ls -a”,可以查看文件或 ...
- 在服务端处理同步发送小消息的性能上Kafka>RocketMQ>RabbitMQ
在发送小消息的场景中,三个消息中间件的表现区分明显: Kafka的吞吐量高达17.3w/s,远超其他两个产品.这主要取决于它的队列模式保证了写磁盘的过程是线性IO.此时broker磁盘IO已达瓶颈. ...
- ShareMemory
项目地址 : https://github.com/kelin-xycs/ShareMemory ShareMemory 一个用 C# 实现的 No Sql 数据库 , 也可以说是 分布式 缓存 , ...
- php 图片剪切
<?php /** * 图像裁剪 * @param $source_path 原图路径 * @param $target_width 需要裁剪的宽 * @param $target_height ...
- go http 传递json数据
上篇博文中简单介绍了Go HTTP的Server 和Client.本文介绍如何在HTTP中传递json格式的数据. Server package main import ( "encodin ...
- 温习《PHP 核心技术与最佳实践》这本书
再次看这本书,顺手提炼了一下大致目录,以便后续看见目录就知道大概讲的些什么内容 PHP 核心技术与最佳实践 1.面向对象思想的核心概念 1.1 面向对象的『形』与『本』 1.2 魔术方法的应用 1.2 ...