整理九道关于javascript字符串的笔试题_Selfimpr欧的博客-程序员宅基地

技术标签: 前端  javascript  

1.写一个方法去掉字符串的空格

let str = ' abc   aa   s     '
//第一种
function trim(str){
  let reg = /\s+/g
  if(typeof str == 'string'){
    return str.replace(reg,'')
  }
}
trim(str)

//第二种
str.split(' ').join('')

2.去除字符串中最后一个指定的字符或者是字符串

let str = 'abaaaaeaad'
function delChar(str,char){
  let index = str.lastIndexOf(char) //lastIndexOf 获取一个指定的字符出现在一个字符串中出现的最后的位置 从后向前搜索
  let len = [...char].length
  return str.substring(0,index)+str.substring(index+len,str.length) //substring 截取字符串
}
console.log(delChar(str,'aa'))

3.写一个方法把下划线命名转换成大驼峰命名

function changeName(name){
  let arr = name.split('_')
  let lastStr = arr[arr.length-1]
  arr[arr.length-1]= lastStr[0].toUpperCase()+lastStr.substring(1,lastStr.length)
  return arr.join('')
}
console.log(changeName('first_name'))

4.写一个把字符串大小写切换的方法

let str = 'aSdFgH'
function toCaseStr(str){
  let strArr = []
  str.split('').forEach(i=>{
    if(i.charCodeAt()>=65&&i.charCodeAt()<=90){ //str.charCodeAt(index) 获取一个字符的unicode编码 65-90 是大写 97-122是小写
      i = i.toLowerCase()
    }else(
      i = i.toUpperCase()
    )
    strArr.push(i)
  })
  return strArr.join('')
}
console.log(toCaseStr(str))

5.统计某一个字符或字符串在另一个字符串中出现的次数

//第一种
function setCount(str,charStr){
  let count = 0
  if(!charStr) return count
  while(str.match(charStr)){
    str = str.replace(charStr,'')
    count++
  }
  return count
}

//第二种
function setCount(str,charStr){
  let len = str.match(new RegExp(charStr,'g')).length
  return len
}
console.log(setCount('ababababeeeeeee','ab'))

6.写一个获取当前url查询字符串中的参数的方法

function getParams(){
  let search = window.location.search //获取?后面的部分?name=xxx&id=xx
  search = search.substring(1,search.length) //将?截取掉
  let res = {}
  search.split('&').forEach(item=>{
    let [key,value] = item.split('=')
    res[key] = decodeURIComponent(value);
  })
  return res
}
getParams()

7.写一个方法判断字符串是否为回文字符串

function isPalindrome(s){
  if(s.length == 1) return true
  let str = s.replace(/[^a-zA-Z0-9]/g,'').toLowerCase() //因为可能有大写 统一转换为小写
  let reverseStr = str.split('').reverse().join('')
  return str == reverseStr
}
console.log(isPalindrome('A man, a plan, a canal: Panama'))

8.随机生成一个指定长度的验证码 包含大写字母 小写字母 数字 特殊字符

function getRandomCode(len) {
  const allStr = 'azxcvbnmsdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP0123456789.*&^%$#@!~';
  let code = '';
  for (let index = 0; index < len; index++) {
      code += allStr.charAt(Math.floor(Math.random() * 73));
  }
  return code;
}
console.log(getRandomCode(5))

9.写一个方法删除字符串中所有相邻重复的项

function delRepeatChar(str){
  return str.replace(/(.)\1*/g,'$1')
}
console.log(delRepeatChar('aaabhhhhjjjjuiuuu'))

如果有更好的写法的话,请大家能够评论指教一下,谢谢

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42736311/article/details/115326321

智能推荐

自适应近邻的多视图聚类-程序员宅基地

多视图聚类  对最近看的论文的一个总结。Multi-View Clustering and Semi-Supervised Classification with Adaptive Neighbours(MLAN)  聂飞平将单一视图的CAN推广到多视聚类,即MLAN。  单视CAN聚类的目标函数为:推广到多视聚类MLAN:其中wvw_vwv​是每个视图的权重,这里的权重是自动分配,不需要添加参数。 我在这里理解wvw_vwv​参数的含义是将距离的平方开根号,减少离群点的重要性,不知道我理解

php ide 2017,【版本升级】智能PHP IDE—Zend Studio v13.6正式发布_唐胜鑫的博客-程序员宅基地

Zend Studio是新一代的专业级智能PHP IDE,它旨在帮助开发人员提高工作效率,创造出高品质的PHP应用程序!它包含了PHP开发所必须的部件,通过一整套的编辑、调试、分析、优化和数据库工具,Zend Studio加速开发周期,并简化复杂的应用方案。最新改进支持PHP 7.1PHP 7.1是目前最新最好的PHP版本,与Zend Studio 13.6完全兼容。 语言改进包括:Nullabl..._zendstudio 提升php版本

边境的悍匪—机器学习实战:第十九 大规模训练和部署TensorFlow模型_tensorflow 训练 自动部署_doubleZ7的博客-程序员宅基地

这一章是这本书的最后一章,最后的我们学习的是整个机器学习中不可获取的一部分:模型的部署与一些加速训练的方法。当我们已经拥有了完美的模型的时,想到的第一件事就是将模型部署到生产环境中发挥他的能力。正常情况想我们会像开发模型是那样,调用predict()来完成模型的预测,其实这并不是最好的选择。我们在训练模型的时候也会遇到由于模型规模很大,需要处理的数据庞大的问题,面对这些我们都有很好的解决办法,下面就让我们一起来看一下吧。我们可以使用TF Serving来完成模型的部署与版本迭代。_tensorflow 训练 自动部署

SparkSQL UDF函数_spark sql udf-程序员宅基地

无论是Hive还是SparkSQL分析处理数据时,往往需要使用函数,SparkSQL模块本身自带很多实现公共功能的函数,在pyspark.sql.functions中。Hive中常见的自定义函数有三种UDF(一对一)、UDAF(多对一)、UDTF(一对多)。在SparkSQL中,目前仅仅支持UDAF与UDF,而python仅支持UDF。sparksession.udf.register():注册的UDF可以用DSL和SQL,返回值用于DSL风格,传参内给的名字用于SQL风格。_spark sql udf

工程师事业的思考(分享一些好的面试题)-程序员宅基地

题记最近去参加了一场技术交流会,小圈子内的技术交流,有来自大厂的一些高层工程师,做技术嘛,这条路其实是木有尽头的,说到底还是得要基础好哇。我目前是在做区块链行业,做数字货币交易所,然后很多朋友就是觉得非常不理解了嘛。 就像李笑来说的那样: 可能真的是精英阶层没空关注比特币等数字货币吧。在去参加交流会之前,虽然说自己工作做Java也有好几年了,但是平时工作很忙,更多的是在做项目,对技...

阿里云centos7.3 安装jdk+tomcat+mysql (javaweb运行环境)-程序员宅基地

注 :系统版本:阿里云 centos7. 3 tomcat版本:9.0.8 JDK版本:JDK81.安装JDK(1)推荐从官网下载JDK的安装包。用于服务器的安装包结尾的格式为.tar.gz;(2)在服务器上的home目录新建文件夹 命名为jdk,并将刚刚下载的安装包上传到这个目录 即目录 /home/jdk;(3)解压安装包 输入以下命令进行解压; 注意:此处...

随便推点

win10虚拟打印服务器,除物理打印机,Win10还可以使用虚拟打印机,其实是一种应用程序..._Yasuraoka Mugi的博客-程序员宅基地

上回书说到,几乎所有的应用程序都提供了打印功能,大到Microsoft Word程序,小到记事本程序,都可以在这些程序中找到执行打印操作的命令。在开始打印之前,应用程序通常都提供了对页面的尺寸、边距等进行设置的选项。不同应用程序所提供的打印前的页面设置界面可能存在较大差异。书接上回,除了物理打印机外,还可以使用虚拟打印机。虚拟打印机是一种应用程序,在正确安装好虚拟打印机后,可以在【设备和打印机】窗...

算法练习-----骨牌铺方格_小明有几个骨牌,要将一些骨牌排成一行,使到相邻的骨牌交接处的两个方块的点数一样,问他最多能用几个骨牌-程序员宅基地

#include <iostream>using namespace std;int main(){ long long a[51];//注意类型 int n; a[1]=1; a[2]=2; for(int i=3;i<=50;i++) a[i]=a[i-1]+a[i-2]; while(cin>..._小明有几个骨牌,要将一些骨牌排成一行,使到相邻的骨牌交接处的两个方块的点数一样,问他最多能用几个骨牌

Tensorflow lite--安全帽与反光背心的目标检测_tensorflowlite目标检测实例-程序员宅基地

参考了博客,是一个口罩的识别。在用标注工具标注自己的数据集后,转换数据集格式,voc的XML格式转换csv格式,csv再转成tensorflow所需要的标签和图片合体的record格式。XML-CSV 网盘 vln2CSV-record 源码中就给了,在参考博客中也给出了。在准备好自己的数据集后,就可以开始配置tensorflow环境了,这个比较麻烦,我是在conda虚拟环境中配置的tensorflow-gpu,版本是1.15,# your_name为自命名虚拟环境名conda create_tensorflowlite目标检测实例

认识MOS-程序员宅基地

MOSFET学习记录MOSFET基础MOSFET小知识MOSFET的结构MOSFET基础MOSFET小知识MOSFET是一个电压驱动器件,具有更高的导通阈值电压,但其栅极是呈电容性的,因此需要大的瞬态电流来实现快速开关。在MOSFET中没有电导率调制,所以通态电压降是有限的导通电阻RDS引起的,随着电流的增加而增加,而关断时,只需要极短的反向恢复时间。大多数应用于较低的开关速度场合,新材料似乎有很大的发展潜力,如碳化硅(SIC)。MOSFET的结构漏极接触在图中右上方的n+区域,并且穿过它达

Mac配置maven报错“The JAVA_HOME environment variable is not defined correctly”_Chiara Wang的博客-程序员宅基地

Mac配置maven报错:“The JAVA_HOME environment variable is not defined correctly”的解决方法