字符串操作

  • length、charAt、fromCharCode
    • 小案例:验证QQ号
  • 字符串拼接、查询索引
  • 字符串截取
    • slice
    • substring
  • 案例-查找关键字高亮显示

length、charAt、fromCharCode

length:获取字符串长度

alert('yangwei杨'.length);  //  8
alert('yangwei 杨'.length);  //  9
alert('yangwei 杨 '.length);  //  10alert('yangwei 杨'[3]); // g ;IE678不兼容 undefined

charAt:获取字符串索引位子的字符

alert('yangwei杨'.charAt(3)); // g
alert('yangwei杨'.charAt(32325)); // '' (空)
alert('yangwei杨'.charAt('0')); // y

charCodeAt:获取字符串索引位子的字符的ASCII码

var str1 = '012345';   // 0-9 ==> 48-57
var str2 = 'abczABCZ';     // a-z ==> 97-122;A-Z ==> 65-90
// alert(str1.charCodeAt()); // 48 (ascii码)
// alert(str1.charCodeAt(0)); // 48 (ascii码)
// alert(str1.charCodeAt(252)); // 找不到 NaN
alert(str2.charCodeAt(3)); // 122

fromCharCode:ascii码转字符串

var num = 48;
// alert( String.fromCharCode(num) );  // 0
alert( String.fromCharCode(48, '97') ); // 0a

小案例:验证QQ号

<input type="text" placeholder="请输入QQ号" id="txt" maxlength="10">
<input type="button" id="btn" value="验证">
// 0-9 <==> 48-57
var oTxt = document.getElementById('txt');
var oBtn = document.getElementById('btn');oBtn.onclick = function(){var val = oTxt.value;if(!val){alert('请输入QQ号');oTxt.focus();}// QQ号第一位不能为0if(val.charCodeAt() == 48){alert('验证失败!第1个位置不能为0!');return;}// QQ号长度限制(5~10)var len = val.length;if(len<5 || len>10){alert('验证失败!QQ号长度错误!');return;}// QQ号只能是字数组成for(var i=0;i<len;i++){var valCode = val.charCodeAt(i);if(valCode<48 || valCode>57){alert('验证失败!第'+(i+1)+'个位置不是数字!');oTxt.focus();// break;return;}}alert('验证成功!');return;
}

字符串拼接、查询索引

concat:连接两个或多个字符串

var str1 = '我很帅吗?';
var str2 = '很帅';
alert( str1.concat(str2) ); // 我很帅吗?很帅
alert( str1.concat(str2, str2) ); // 我很帅吗?很帅很帅

indexOf:返回索引,找不到返回-1

alert( str1.indexOf('帅') ); // 2
alert( str1.indexOf('很帅') ); // 1
alert( str1.indexOf('afdas') ); // -1// 带参数表示从参数指定的位置往后找,找到就返回索引,找不到就返回-1
alert( str1.indexOf('帅', 3) ); // 2

查询单个的原理

String.prototype.xxxIndexOf = function(key){var len = this.length;var index = -1;for(var i=0; i<len; i++){if(this.charAt(i) == key){index = i;break;}}return index;
}
alert( str1.xxxIndexOf('帅') ); // 2

lastIndexOf:从后往前找,indexOf:从前往后找

str1 = 'fasfsafa'
alert( str1.lastIndexOf('f') );// 6

join

var arr = [0, 1, 'a'];
var s1 = arr.join();
console.log(s1); // 0,1,a
var s2 = arr.join('$$');
console.log(s2); // 0$$1$$a

字符串截取

slice(startIndex, endIndex);——包含startIndex,不包含endIndex ==> [startIndex, endIndex)
substring(startIndex, endIndex);——包含startIndex,不包含endIndex ==> [startIndex, endIndex)

slice

1、若 startIndex 是负数,则 startIndex = length + startIndex
2、若 endIndex 是负数,则 endIndex = length + endIndex
3、若参数个数为1并且是负数,绝对值>length,则参数就是0

var str = '0123456789';console.log( str.slice() ); // 0123456789
console.log( str.slice(0) ); // 0123456789
console.log( str.slice(2) ); // 23456789
console.log( str.slice(10) ); // '' 空
console.log( str.slice(-1) ); // 9
console.log( str.slice(-11) ); // 0123456789
console.log( str.slice(2, 5) ); // 234
console.log( str.slice(-3, 2) ); // '' 空

substring

和slice基础部分一样
1、若 startIndex 或 endIndex 为负数,则 startIndex = 0 或 endIndex = 0
2、若 startIndex 或 endIndex 大于length,则 startIndex = length 或 endIndex = length
3、若 endIndex < start,则它们会自动交换

var str = '0123456789';console.log( str.substring() ); // 0123456789
console.log( str.substring(0) ); // 0123456789
console.log( str.substring(2) ); // 23456789
console.log( str.substring(10) ); // '' 空
console.log( str.substring(-1) ); // 0123456789
console.log( str.substring(-4, -3) ); // '' 空
console.log( str.substring(2, 5) ); // 234
console.log( str.substring(-3, 2) ); // 01
console.log( str.substring(4, -1) ); // 1234

substring原理

String.prototype.xxxSubstring = function(start, end){var len = this.length;var s = '';if (start < 0) {start = 0};if (end < 0) {end = 0;}if (start > len) {start = len;}if (end > len) {end = len;}// 交换var min = Math.min(start, end);var max = Math.max(start, end);for(var i=min; i<max; i++){s = s.concat(this.charAt(i))}return s;
}
console.log( str.xxxSubstring(4, -1) )

案例-查找关键字高亮显示

*{padding: 0;margin: 0;}
#box{width: 400px;height: auto;margin: 50px auto;border: 1px solid grey;text-indent: 24px;}
p{text-align: center;}
#txt{height: 40px}
#btn{height: 40px;width: 80px}
<div id="box">我喜欢借月色沉淀心情,如水月色,可饮。推开窗户,任月色静静流泻在肌肤上,轻盈飘逸的韵致,清新蕴涵的情调自然流淌在心际。月华如练,心情在月色中变的清朗而柔软,恍然间生命中的种种感动和美丽灵动浮若。
</div>
<p><input type="text" id="txt" placeholder="请输入文字..."><input type="button" id="btn" value="查找">
</p>
window.onload = function(){var oBox = document.getElementById('box');var oTxt = document.getElementById('txt');var oBtn = document.getElementById('btn');var content = oBox.innerHTML;// oBtn.onclick = function(){//    oBox.highlight(content, oTxt.value);// }// 输入框获取焦点的时候oTxt.onfocus = function(){document.onkeyup = function(){oBox.highlight(content, oTxt.value);}}// 封装search highlightObject.prototype.highlight = function(content, keyword){if(!keyword) {this.innerHTML = content;}else{var arr = content.split(keyword);this.innerHTML = arr.join('<span style="color:red;background:yellow">'+keyword+'</span>');}}
}

JavaScript基础(四)字符串操作相关推荐

  1. JavaScript中的字符串操作(转)

    http://www.cnblogs.com/xuebin/articles/1296837.html 最近编一个javascript的翻译程序,发现无法正确比较两个字符串的相等,上网查了查,发现这篇 ...

  2. JavaScript常用的字符串操作对象方法

    文章目录 ==对象方法== ++搜索.索引 `indexOf() ` :搜索首个字符串出现的位置 `lastIndexOf() `:搜索最后出现的字符串位置 `includes() `:搜索判断字符串 ...

  3. JavaScript基础——处理字符串

    String对象是迄今为止在JavaScript中最常用的对象.在你定义一个字符串数据类型的变量的任何时候,JavaScript就自定为你创建一个String对象.例如: var myStr = &q ...

  4. [记录] JavaScript 中的字符串操作

    字符串原型: 通过修改字符串的原型,可以为所有字符串添加公共方法 String.prototype.startwith = function(text) {return this.indexOf(te ...

  5. go基础:字符串操作

    一.简介 字符串是在编程中一个非常常见的操作,熟悉语言的自带的字符串操作函数能帮助你写出优雅.高效的代码,所以语言中自带的字符串处理函数,大家应该熟练掌握.go中主要操作字符的包是strings,下面 ...

  6. Python 基础之字符串操作,函数及格式化format

    一.字符串的相关操作 1.字符串的拼接 + strvar1 = "我爱你," strvar2 = "亲爱的姑凉" res = strvar1 + strvar2 ...

  7. python入门之字符串处理_Python基础之字符串操作,格式化。

    Python字符串现在感觉在日常的使用中不多,但仔细看了书以后一些小技巧还是很方便的,我这里简单的记录下. 插入一个超搞逼格的: .format_map(其实这个是字符串的方法.....) In [8 ...

  8. Python基础知识-字符串操作

    字符串常见操作 1.切片 2. 查询(find,index) 3. 大小写转换(upper.lower.swapcase.capitalize和title) 4. 对齐(center,just和zfi ...

  9. 010-python基础-数据类型-字符串操作

    1.移除空白 1 username.strip() 2.分割 1 names = "alex,jack,rain" 2 names_1 = names.split(",& ...

  10. java——基础数据类型——字符串操作

    ======================================================================== 获取字符串长度 String st = "b ...

最新文章

  1. Mac下sublime text2 解决中文乱码
  2. 【iOS开发】静态库 a文件合成脚本解释
  3. 深入浅出 Java 微服务视频
  4. future career plan
  5. treelistview 所有节点失去焦点_垃圾询盘过滤,焦点科技的 Milvus 实践
  6. html 冒泡事件拦截,Js 冒泡事件阻止
  7. cmd中安装app的的命令
  8. Android开发笔记(一百四十九)约束布局ConstraintLayout
  9. 2021大同高考成绩查询,大同高考分数查询(查询方法+入口)
  10. mysql数据库季度函数_数据库之MySQL函数(二)
  11. Win10无法安装 文鼎CS行楷.TTF
  12. 开放平台及其技术架构
  13. 项目进度管理方法——里程碑
  14. Keras机器翻译实战
  15. [大学物理实验-4]弦上驻波实验
  16. 第一次尝试公司项目上线
  17. 问题日志-简易css时间轴特效
  18. MyEclipse中常用的查找快捷键
  19. 人工智能、机器学习与深度学习的区别与联系
  20. 绘制线性回归和多元线性回归

热门文章

  1. matlab启动慢如龟爬!!终于知道咋办了。
  2. android开发歌词滑动效果_Android 歌词同步滚动效果
  3. 票面利率,收益率和到期收益率
  4. 阿哲---正式入住CSDN
  5. MFC界面开发工具BCG v30.6 - 全新网格/报表控件
  6. 《自己动手做智能机器人》——1.3 机电一体化技术带来哪些明星产品
  7. navicat for mysql 导出向导_详解 Navicat 导出向导步骤
  8. 3D audio 及 Virtual Surround 算法
  9. 世界上最远的距离——泰戈尔
  10. VIPS:基于视觉的Web页面分页算法(转载)