这仅仅是个人在对学习js道路上的扎实基础过程的记录!!!
1、判断一个字符(比如“a”)是否出现在另一个字符(比如“234a0sadfj2affa2”)中,如果出现,求出出现了几次。
分析:
第一种方法
思路:首先我们的目的是为了查出字符串中是否有这个字符串,有的话将其记录一次,查找字符串的话可以用indexof(),但是查找的话就要遍历一下字符串,所以这时要做一个for循环完成对字符串的每个元素的遍历,如果查找到这时便需要定义一个变量让其自加做一次记录,在第二次查找到相同元素再做一次累加......以此类推,完成对整个字符串的查询,然后这时将累加的和输出便是字符串在另一个字符串出现的总和;
这里遍历的是字符串的元素而不是下标
代码:
var str = '234a0sadfj2affa2';
var a = 'a';
// 定义一个变量j用来记录a出现的次数
var j = 0;
for (var i=0; i<str.length; i++) {
if(a.indexOf(str[i]) != -1 ){
j++;
}
}
console.log('a出现了'+j+'次');
结果:

第二种方法
思路:思路和第一种方法差不多,只不过在for循环中,我们是判断变量a与str字符串的字符是否相等,相等的话记录一次,遍历完str字符串之后累加的值便是a出现的次数
代码:
var str = '234a0sadfj2affa2';
var a = 'a';
var j = 0;
for (var i=0; i<str.length; i++) {
// 判断的条件中是将a的值与str字符串的每个字符进行比较,相同则j自加一次
if(a == str[i] ){
j++;
}
console.log('a出现了'+j+'次');
结果:

2、获取一个长文件路径中的文件名及其后缀,(注意 在js中,字符串中的特殊字符需要使用转义字符进行转义,比如“\”要写成"\\" 因为“\\”前面的反斜杠是转义所以“\\”只当做一个字符)
分析:需要写入一串是文件名的字符串如:var str = 'c:\\上课用\\专用文件夹\\B0348\\JavaScript\\day03\\03基础小案例.html';我们想要取的是文件名(03基础小案例)和后缀(html),这时我们就有两种思路了,一种是我们想要获得文件名就可以对字符串进行从后往前的查找(lastIndexOf(字符)),查找到‘0’这个字符和‘h’,然后用str.substr()将其截取出来,这第二种也是用从前往后的查找方法,找到第一个反斜杠“\\”的索引值 和第一个‘.’的索引值,然后用 substring()的方式分别截取出来即可。
知识点:这里用到内置对象String的属性
substring(start,end) //从指定位置开始,截取字符串到结束位置, end值取不到;
substr(start,length)从指定位置开始,截取length长度个字符;
lastIndexOf(字符) //从后往前找,只找第一个匹配的字符【尾次】;
代码:
1、
var str = 'c:\\上课用\\专用文件夹\\B0348\\JavaScript\\day03\\03基础小案例.html';
// substr(start,length)从指定位置开始,截取length长度个字符
// lastIndexOf(字符) 从后往前找,只找第一个匹配的字符【尾次】
console.log(str.substr(str.lastIndexOf(0), 7));
console.log(str.substr(str.lastIndexOf('h'), 4));
//(注:我这里是直接将其合并来写了,然后打印出来,本人比较懒,当然你也可以将其分开,用变量接过每次操作的值再打印
2、
var str = 'c:\\上课用\\专用文件夹\\B0348\\JavaScript\\day03\\03基础小案例.html';
var gang = str.lastIndexOf('\\')
var dian = str.lastIndexOf('.')
//这里的+1操作是在查找的索引值基础上再加一位,因为我们取的不包括斜杠
var ming = str.substring(gang + 1, dian)
console.log(ming);
var hz = str.substring(dian + 1)
console.log(hz);
结果:

3、用户自输入一个字符串,然后将该字符串反转顺序,并且首尾字母转为大写,其他字母转为小写后弹出框输出。
分析:首先我们要明确这个题目的意思 抓住重点,是需要将字符串反转首尾字母转为大写,然后其它的都为小写,明确了以后我们就要考虑所学的内置对象string的属性中哪个能将字母大写和小写,当然了字符串没有反转这一属性,但是数组有这一属性啊,这时我们可以考虑将字符串转化为数组然后再将数组反转(因为数组Array有反转这一属性值),这时字符串不就反转过来啦,然后再将数组转为字符串,这就实现了字符串的反转啦。然后再对首尾字母大写,其他转为小写不就可以实现了吗。
要点:要学会运用string和Array之间的转换,并且要吃透两者的属性,学会运用两者属性
这里我就说用到的两者属性就可以啦,其他属性可以去查阅文档 MDN
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
Array的属性
Join() //将数组中的每一个元素通过一个字符链接到一块
reverse() // 翻转数组
string属性
split() // 以一个分割符,将一个字符串串分割成一个数组
charAt(index) //获取指定位置处的字符(该题用于取字符串首尾字符)
大小写转换法
toLocaleUpperCase() //转化为大写
toLocaleLowerCase() //转化为小写
方案一:方法有点复杂且有点局限性(因为不知道用户输入的字符串是否有大写)
var s1 = prompt('一个字符串')
//将字符串转为数组
var s1 = s1.split('');
//反转数组
var s2 = s1.reverse();
//转为字符串
var z = s2.join('')
//取到首字符
var a = z.charAt(0)
//取到最后一个字符
var b = z.charAt(z.length - 1)
//截取中间部分字符
var c = z.slice(1, z.length - 1)
//将它们拼接起来就可以实现了
alert(a.toUpperCase() + z.slice(1, z.length - 1) + b.toUpperCase());
方案二:
var s1 = prompt('一个字符串')
var s1 = s1.split('');
var s2 = s1.reverse();
//对数组s2进行遍历
for (var i = 1; i < s2.length; i++) {
//这里判断索引值是否是首位和末尾位,是的话就改为大写,不是就小写
if ( i == 0 || i == s2.length - 1) {
s2[i] = s2[i].toUpperCase();
}else {
s2[i] = s2[i].toLocaleLowerCase();
}
}
//将数组转化为字符串
var str = s2.join('')
alert(str);
结果:

4、(Math. 逻辑)编写一个函数,带一个参数n,在页面上输出1~n(n>1)之间所有能同时被3和5整除的偶数,并要求每行只输出6个(即超过6个后要换行再输出)
分析:
这里只需要写一个算法控制1~n(n>1)之间所有能同时被3和5整除的偶数,要求每行只输出6个结果的意思就是当在1~n这个数之间找到了很多个这样的数,但是要控制一行只输出6个,超过六个就换下一行(这里可以在算法中加一个自增变量,每次计算出一个值就自加一次,然后加到6的时候做一次判断以此类推的的话就是只要判断自增变量只要是6的倍数就进行一次换行操作),这时就解决了
程序:
function sum(n) {
//定义一个变量x
var x = 0;
//在1~n中循环算法
for (var k=1; k<=n; k++) {
//计算1~n(n>1)之间所有能同时被3和5整除的偶数
if (k % 3 == 0 && k % 5 == 0 && k % 2 == 0) {
document.write(k+' ');
//得到一次结果自加一次
x++;
//判断是否换行
if (x % 6 == 0) {
document.write('<br>')
}
}
}
}

这篇博客记录了作者在学习JavaScript过程中的一些基础练习,包括使用indexOf()和lastIndexOf()查找字符出现次数,从文件路径中提取文件名和后缀,反转字符串并处理首尾字母,以及利用Math逻辑找出能被3和5整除的偶数。

1214

被折叠的 条评论
为什么被折叠?



