题目:

预备代码:

  1. // 自定义输出
  2. var log = function () {
  3. console.log.apply(this, arguments);
  4. };
  5.  
  6. // ======
  7. // 测试
  8. // ======
  9. //
  10. // 定义用于测试的函数
  11. // ensure 接受两个参数
  12. // condition 是 bool, 如果为 false, 则输出 message
  13. // 否则, 不做任何处理
  14. var ensure = function(condition, message) {
  15. // 在条件不成立的时候, 输出 message
  16. if(!condition) {
  17. log('*** 测试失败:', message)
  18. }
  19. };

题目代码:

  1. // 找出字符串中出现次数最多的字母:
  2. function func(str) {
  3. var arr = {};
  4. // 把每个字母和其对应出现的次数存到对象(字典)中
  5. for (var i = 0; i < str.length; i++) {
  6. if (arr[str[i]] === undefined){
  7. arr[str[i]] = 1
  8. }
  9. else{
  10. arr[str[i]] += 1
  11. }
  12. }
  13. var max = 0;
  14. var chart = "";
  15. for(var s in arr){
  16. var num = arr[s];
  17. if(num>max){
  18. max = num;
  19. chart = s;
  20. }
  21. }
  22. log(arr);
  23. log(chart.toString()+max.toString());
  24.  
  25. res = chart.toString()+max.toString();
  26.  
  27. return res
  28. }
  29. result = func("WelcomeToQianfeng");
  1. // 分割单词
  2. var str2={};
  3. function word(str1){
  4. for(var i=1;i<str1.length;i++){
  5. // 思路: 在第一个字母之后 如果发现有大写字母后面是小写字母 就把这个大写字母换成空格和这个大写字母
  6. // 检测是否为大写字母
  7. if(/[A-Z]/g.test(str1[i])){
  8. // 检测是否是小写字母
  9. if(/[a-z]/g.test(str1[i-1])){
  10. str1=str1.replace(str1[i], " "+str1[i]);
  11. }
  12. }
  13. }
  14. // str2是str1的子串(str1第一个字符之后的子串)
  15. str2=str1.substring(1);
  16. log(str1[0]+str2.toLowerCase());
  17.  
  18. return str1[0]+str2.toLowerCase();
  19. }
  20.  
  21. result = word("HelloMyWorld");
  1.  
  1. // 单词逆序
  2. // Welome to Beijing -> Beijing to Welcome
  3. // 思路: 先将字符串分割成一个个的词,然后将这些词存入数组中并逆序,最后连接起来即可
  4. var arr=[];
  5. var str3="Welome to Beijing";
  6. arr=str3.split(" ");
  7. var str4=arr.reverse();
  8. var res = str4.join(" ");
  9. log(arr);
  10. log(res);
  1.  
  1. // 作业 1
  2. // 字符串s1和字符串s2 但 s2 的长度是 1 返回 s2 在 s1 中的下标, 从 0 开始, 如果不存在则返回 -1
  3. var find = function(s1, s2) {
  4. var len = s1.length;
  5. if(s1.includes(s2)) {
  6. for (var i = 0; i < len; i++) {
  7. var str = s1[i];
  8. if (str === s2) {
  9. //log("i 的值:",i)
  10. return i
  11. }
  12. }
  13. }
  14. // log(-1)
  15. return -1
  16. };
  1. // 作业2-1
  2. // 返回字符串的小写形式的函数 注意, 这里假设了字符串全是大写字母
  3. // 这里是两个字符串, 包含了大写字母和小写字母
  4. var lower = 'abcdefghijklmnopqrstuvwxyz';
  5. var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  6.  
  7. var lowercase = function(s) {
  8. // 初始化一个空字符串
  9. var result = "";
  10. for (var i = 0; i < s.length; i++) {
  11. // 注意, 这个 find 是你要实现的函数
  12. var index = find(upper, s[i]);
  13. // 字符串可以用加号拼接, 不明白可以 log 一下
  14. result += lower[index];
  15. }
  16. return result;
  17. };
  18.  
  19. // var test_lowercase = function() {
  20. // ensure(lowercase('SDEW') === 'sdew','测试1失败')
  21. // };
  22. // test_lowercase();
  23.  
  24. // 作业 2-2
  25. // 定义一个函数 参数是一个字符串 返回大写后的字符串 注意字符串全是小写字母
  26. var lower = 'abcdefghijklmnopqrstuvwxyz';
  27. var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  28.  
  29. var uppercase = function(s) {
  30. var result = "";
  31. for (var i = 0; i < s.length; i++) {
  32. var index = find(lower,s[i]);
  33. result += upper[index]
  34. }
  35. return result
  36. };
  37.  
  38. // var test_uppercase = function() {
  39. // ensure(uppercase('sdwt') === 'SDWT','测试1失败')
  40. // };
  41. // test_uppercase();
  1.  
  1. // 作业 3
  2. // 实现 lowercase1 它能正确处理带 小写字母 的字符串s 返回 小写字母 的字符串
  3. var lower = 'abcdefghijklmnopqrstuvwxyz';
  4. var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  5. var lowercase1 = function(s) {
  6. var result = "";
  7. var len = s.length;
  8. for (var i = 0; i < len; i++) {
  9. if (upper.includes(s[i])) {
  10. var index = find(upper,s[i]);
  11. result += lower[index]
  12. //log(result)
  13. }else {
  14. result += s[i]
  15. //log(result)
  16. }
  17. }
  18. return result
  19. };
  20.  
  21. // var test_lowercase1 = function() {
  22. // ensure(lowercase1('dadEG') === 'dadeg','测试1失败');
  23. // ensure(lowercase1('wWedaaLo') === 'wwedaalo','测试2失败');
  24. // };
  25. // test_lowercase1();
  26.  
  27. // 作业 4
  28. // 实现 uppercase1 它能正确处理带 大写字母 的字符串 返回 大写字母 的字符串
  29. var uppercase1 = function(s) {
  30. var result = "";
  31. var len = s.length;
  32. for (var i = 0; i < len; i++) {
  33. if (lower.includes(s[i])) {
  34. var index = find(lower,s[i]);
  35. result += upper[index];
  36. // log(result)
  37. }else {
  38. result += s[i];
  39. // log(result)
  40. }
  41. }
  42. return result
  43. };
  44.  
  45. // var test_uppercase1 = function() {
  46. // ensure(uppercase1('dadEG') === 'DADEG','测试1失败');
  47. // ensure(uppercase1('wWedaaLo') === 'WWEDAALO','测试2失败');
  48. // };
  49. // test_uppercase1();
  1. // 作业 5
  2. // 实现一个叫 凯撒加密 的加密算法, 描述如下:
  3. // 对于一个字符串, 整体移位, 就是加密
  4. // 以右移 1 位为例 原始信息 'afz' 会被加密为 'bga'
  5. // 实现 encode1 函数, 把明文加密成密码并返回 右移 1 位
  6. // 注意, 假设字符串一定只包含小写字符
  7. var lower = 'abcdefghijklmnopqrstuvwxyz';
  8. var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  9. var encode1 = function(s) {
  10. var result = "";
  11. var len = s.length;
  12. for (var i = 0; i < len; i++) {
  13. var sl = s[i];
  14. var index = find(lower,s[i]);
  15. if (s[i] === 'z') {
  16. result += lower[0]
  17. }else {
  18. result += lower[index+1]
  19. }
  20. }
  21. return result
  22. };
  23.  
  24. // var test_encode1 = function() {
  25. // ensure(encode1('afz') === 'bga', "encode1测试1");
  26. // ensure(encode1('crp') === 'dsq', "encode1测试2");
  27. // };
  28. // test_encode1();
  29.  
  30. // 作业 6
  31. // 实现 decode1 函数, 把作业 5 加密的密码解密为明文并返回
  32. var decode1 = function(s) {
  33. var result = "";
  34. var len = s.length;
  35. for (var i = 0; i < len; i++) {
  36. var index = find(lower,s[i]);
  37. if (s[i] === lower[0]) {
  38. result += lower[25]
  39. }else {
  40. result += lower[index-1]
  41. }
  42. }
  43. return result
  44. };
  45.  
  46. // var test_decode1 = function() {
  47. // ensure(decode1('bga') === 'afz', "decode1测试1");
  48. // ensure(decode1('dsq') ==='crp', "decode1测试2");
  49. // };
  50. // test_decode1();
  51.  
  52. // 作业 7
  53. // 实现 encode2 相比encode1多了一个参数 shift 表示移的位移
  54. var lower = 'abcdefghijklmnopqrstuvwxyz';
  55. var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  56. var encode2 = function(s, shift) {
  57. var result = "";
  58. var len = s.length;
  59. for (var i = 0; i < len; i++) {
  60. var sl = s[i];
  61. var index = find(lower,s[i]);
  62. if (index + shift >= 26) {
  63. result += lower[index + shift - 26]
  64. }else {
  65. result += lower[index + shift]
  66. }
  67. }
  68. return result
  69. };
  70.  
  71. // var test_encode2 = function() {
  72. // ensure(encode2('afz',1) === 'bga', "encode2测试1");
  73. // ensure(encode2('mxc',5) === 'rch', "encode2测试2");
  74. // };
  75. // test_encode2();
  76.  
  77. // 作业 8
  78. // 实现 decode2 相比decode1多了一个参数 shift 表示移的位数
  79. var decode2 = function(s, shift) {
  80. var result = "";
  81. var len = s.length;
  82. for (var i = 0; i < len; i++) {
  83. var index = find(lower,s[i]);
  84. if (index - shift < 0) {
  85. result += lower[index - shift + 26]
  86. }else {
  87. result += lower[index - shift]
  88. }
  89. }
  90. return result
  91. };
  92.  
  93. // var test_decode2 = function() {
  94. // ensure(decode2('afz',1) === 'zey', "decode2测试1");
  95. // ensure(decode2('mxc',5) === 'hsx', "decode2测试2");
  96. // };
  97. // test_decode2();
  98.  
  99. /*
  100. 作业 9
  101. 实现 encode3
  102. 多了一个参数 shift 表示移的位数
  103. 如果 s 中包含了不是字母的字符, 比如空格或者其他符号, 则对这个字符不做处理保留原样
  104. */
  105. var encode3 = function(s, shift) {
  106. var str = lowercase1(s);
  107. var result = "";
  108. var len = s.length;
  109. for (var i = 0; i < len; i++) {
  110. if (lower.includes(str[i])) {
  111. result += encode2(str[i],shift)
  112. }
  113. else {
  114. result += str[i]
  115. }
  116. }
  117. return result
  118. };
  119.  
  120. // var test_encode3 = function() {
  121. // ensure(encode3('5465WD4afz',1) === '5465xe4bga', "encode3测试1");
  122. // ensure(encode3(' 5~m@365!xc',5) === ' 5~r@365!ch', "encode3测试2");
  123. // };
  124. // test_encode3();
  125.  
  126. /*
  127. 作业 10
  128. 实现 decode3
  129. 多了一个参数 shift 表示移的位数
  130. 如果 s 中包含了不是字母的字符, 比如空格或者其他符号, 则对这个字符不做处理保留原样
  131. */
  132. var decode3 = function(s, shift) {
  133. var str = lowercase1(s);
  134. var result = "";
  135. var len = str.length;
  136. for (var i = 0; i < len; i++) {
  137. if (lower.includes(str[i])) {
  138. result += decode2(str[i],shift)
  139. }
  140. else {
  141. result += str[i]
  142. }
  143. }
  144. return result
  145. };
  146.  
  147. // var test_decode3 = function() {
  148. // ensure(decode3('W2玩儿3af$%(SD)z',1) === 'v2玩儿3ze$%(rc)y', "decode3测试1");
  149. // ensure(decode3('mW嗲2+*/.,xDW3c',5) === 'hr嗲2+*/.,syr3x', "decode3测试2");
  150. // };
  151. // test_decode3();
  1.  

JavaScript字符串练习的更多相关文章

  1. JavaScript 字符串实用常操纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  2. JavaScript 字符串操作

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  3. JavaScript 字符串常用操作

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  4. JavaScript 字符串(String) 对象

    JavaScript 字符串(String) 对象 String 对象用于处理已有的字符块. JavaScript 字符串 一个字符串用于存储一系列字符就像 "John Doe". ...

  5. IE JavaScript字符串转换成Date后出现NaN错误

    参考的博文:http://blog.csdn.net/zhu7478848/article/details/53388582 在IE浏览器下, JavaScript字符串转换成Date后会出现NaN错 ...

  6. JavaScript 字符串常用操作纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  7. JavaScript字符串插入、删除、替换函数

    JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...

  8. javascript 字符串方法传参

    javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: '   <td align="left"><input type= ...

  9. JavaScript 字符串(String)对象

    String 对象用于处理已有的字符块. JavaScript 字符串 一个字符串用于存储一系列字符就像 "John Doe". 一个字符串可以使用单引号或双引号: 实例 var ...

  10. step_by_step_记录一个javascript字符串处理问题

    记录一个javascript字符串处理的问题 这一天下班,技术QQ群里的大神提出了一个问题,带着问题去思考. ? '---9890.999008-555555-55555555----' 对于这样的字 ...

随机推荐

  1. jquery学习1之对juery对象的细节操作1

    jquery是前台动态页面开发的一个很重要的工具. 一:jquery对象中length属性和size()方法 var a=$("a").length;         var b= ...

  2. Vue中的“混合”——mixins使用方法

    混合是一种灵活的分布式复用 Vue 组件的方式.混合对象可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项.当组件和混合对象含有同名选项时,这些选项将以恰当的方式混 ...

  3. device public set

    backgroud:  our dvertiser provide on device list of idfa to show ad to  target audience,however none ...

  4. 走进windows编程的世界-----消息处理函数(1)

    Win32消息机制     过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束.     事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...

  5. Centos7修改文件夹权限和用户名用户组

    Linux系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限.根据我自己遇到的情况,对这类问题做一个小结.在命令行使用命令“ll”或者“ls -a”,可以查看文件或 ...

  6. 在服务端处理同步发送小消息的性能上Kafka>RocketMQ>RabbitMQ

    在发送小消息的场景中,三个消息中间件的表现区分明显: Kafka的吞吐量高达17.3w/s,远超其他两个产品.这主要取决于它的队列模式保证了写磁盘的过程是线性IO.此时broker磁盘IO已达瓶颈. ...

  7. ShareMemory

    项目地址 :  https://github.com/kelin-xycs/ShareMemory ShareMemory 一个用 C# 实现的 No Sql 数据库 , 也可以说是 分布式 缓存 , ...

  8. php 图片剪切

    <?php /** * 图像裁剪 * @param $source_path 原图路径 * @param $target_width 需要裁剪的宽 * @param $target_height ...

  9. go http 传递json数据

    上篇博文中简单介绍了Go HTTP的Server 和Client.本文介绍如何在HTTP中传递json格式的数据. Server package main import ( "encodin ...

  10. 温习《PHP 核心技术与最佳实践》这本书

    再次看这本书,顺手提炼了一下大致目录,以便后续看见目录就知道大概讲的些什么内容 PHP 核心技术与最佳实践 1.面向对象思想的核心概念 1.1 面向对象的『形』与『本』 1.2 魔术方法的应用 1.2 ...