Skip to main content

4月日 字符串练习题

找出字符串中所有的数字charCodeAt()

var str = 'haj123sdk54hask33dkhalsd879';
function findNum(str){
var arr = [];
var tmp = '';
for(var i=0;i<str.length;i++){
if( str.charAt(i)<='9' && str.charAt(i)>='0' ){
tmp += str.charAt(i);
}
else{
if(tmp){
arr.push(tmp);
tmp = '';
}
}
}

if(tmp){
arr.push(tmp);
tmp = '';
}

return arr;

}

//方法2:正则表达式
/*
function findNum(str){
return str.match(/\d+/g);
}
*/

// alert( findNum(str) ); //[123,54,33,879]

转驼峰

已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”;

var str = "get-element-by-id";
function convert(obj){
  //先将字符串按照“-”进行切割为数组
  var arr = obj.split("-");
  for(var i=1;i<arr.length;i++){
    //由于get不需要转大写,所以从下标1开始,对第一位字母转大写,并拼接后面的小写字母
    arr[i] = arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
  }
  //对改造完毕的数组元素进行无缝拼接
  console.log(arr.join(""));
}
//调用完成
convert(a);

出现次数最多的字符

判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。

// 有一个对象 来判断是否有该属性 对象['属性名']
var o = {
age: 18
};
if (o["sex"]) {
console.log("里面有该属性");
} else {
console.log("没有该属性");
}

// 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
// o.a = 1
// o.b = 1
// o.c = 1
// o.o = 4
// 核心算法:利用 charAt() 遍历这个字符串
// 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
// 遍历对象,得到最大值和该字符
var str = "abcoefoxyozzopp";
var o = {};
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); // chars 是 字符串的每一个字符
if (o[chars]) {
// o[chars] 得到的是属性值
o[chars]++;
} else {
o[chars] = 1;
}
}
console.log(o);
// 2. 遍历对象
var max = 0;
var ch = "";
for (var k in o) {
// k 得到是 属性名
// o[k] 得到的是属性值
if (o[k] > max) {
max = o[k];
ch = k;
}
}
console.log(max);
console.log("最多的字符是" + ch);


用户登录

//数据
var user = {
name: 'zhangsan',
qq: '535414656',
password: 'Zxcvbn123456'
}

//获取元素
const qq = document.querySelector('input[type=text]')
const pwd = document.querySelector('input[type=password]')
const btn = document.querySelector('button')
const p = document.querySelector('p')
//2. 变量

//3. 添加事件
btn.addEventListener('click', function () {
var str1 = qq.value
var str2 = pwd.value
//输入框不能为空
if (str1 === '') {
p.innerHTML = '用户名不能为空'
} else if (str1.charCodeAt(0) === 48) {
p.innerHTML = 'QQ号码不能以0开头'
} else if(str1.length <= 6 || str1.length > 10){//字符串的长度必须大于等于6
p.innerHTML = 'QQ号码的长度必须在6-10位之间'
}else if (str2 === '') {//输入框不能为空
p.innerHTML = '密码不能为空'
} else {
var n = 0;
for (var i = 0; i < str1.length; i++) {
n = str1.charCodeAt(i);
if (n < 48 || n > 57) {
p.innerHTML = 'QQ号码必须是数字'
return
}
}
location.href = 'http://www.baidu.com'
}
})