java中如何去除string的空格-java string 去除空格
在上一篇文章中,我和大家分享了关于Java的面试题。 今天小编又来给大家分享干货了。 本文收录了一些面试前端职位时经常遇到的经典面试题。 通过本文的知识整理和经验总结希望能帮助到更多的前端面试者。
1.Java
1、Java中如何检测一个变量是String类型?请写函数实现
方法一,
函数是字符串(对象){
返回类型(obj)===“字符串”? 真假;
// obj 的返回类型 === “字符串”? 真假;
}
方法二,
函数是字符串(对象){
返回 obj.constructor === 字符串? 真假;
}
方法三,
函数是字符串(对象){
返回 Object.prototype.toString.call(obj) === “[object String]”?true:false;
}
喜欢:
var isstring = isString('小明');
安慰。 日志(字符串); // 真的
2.请用js去除字符串中的空格?
方法一:使用替换正则匹配的方法
删除所有空格:str = str.replace(/s*/g,"");
去掉两端的空格:str = str.replace(/^s*|s*$/g,"");
删除左边的空格: str = str.replace( /^s*/, "");
删除右边的空格:str = str.replace(/(s*$)/g, "");
str为去除空格的字符串,示例如下:
var str = " 23 23 ";
var str2 = 海峡。 替换(/s*/g,"");
控制台日志(str2); // 2323
方法二:使用str.trim()方法
str.trim() 限制:不能去掉中间的空格,示例如下:
var str = "小明";
var str2 = 海峡。 修剪();
控制台日志(str2); //小明
同样,str.trimLeft() 和 str.trimRight() 分别用于去除字符串的左右空格。
方法三:使用jquery,$.trim(str)方法
$.trim(str) 限制:不能去掉中间的空格,示例如下:
var str = "小明";
var str2 = $.trim(str)
控制台日志(str2); // 小明
举例如下:
函数 showWindowHref(){
var sHref = 窗口。 地点。 参考资料;
变量参数 = sHref。 分裂('?');
如果(args[0] == sHref){
返回 ””;
}
var arr = 参数[1]。 分裂('&');
变量对象 = {};
for(var i = 0; i< arr.length; i++){
var arg = arr[i].split('=');
obj[arg[0]] = arg[1];
}
返回对象;
}
var href = showWindowHref(); // 对象
console.log(href['name']); // 小明
3.js字符串操作函数
concat() – 组合两个或多个字符的文本,返回一个新字符串。
indexOf() – 返回字符串中子字符串第一次出现的索引。 如果没有匹配项,则返回 -1。
charAt() – 返回指定位置的字符。
lastIndexOf() – 返回字符串中子字符串最后一次出现的索引,如果没有匹配则返回 -1。
match() – 检查字符串是否与正则表达式匹配。
substr() 函数——返回一个字符串,其长度为从字符串的 startPos 位置算起的长度
substring() – 返回字符串的子字符串。 传入的参数是开始位置和结束位置。
slice() – 提取字符串的一部分并返回一个新字符串。
replace() – 用于查找与正则表达式匹配的字符串,并将匹配的字符串替换为新字符串。
search() – 执行正则表达式匹配查找。 如果查找成功,则返回字符串中匹配项的索引。 否则返回 -1。
split() – 通过将字符串分成子字符串,将字符串变成字符串数组。
length – 返回字符串的长度,所谓字符串的长度是指它包含的字符数。
toLowerCase() – 将整个字符串转换为小写。
toUpperCase() – 将整个字符串转换为大写。
4、如何添加、删除、移动、复制、创建和查找节点?
1)创建一个新节点
createDocumentFragment() //创建一个DOM片段
() //创建特定元素
createTextNode() //创建文本节点
2) 添加、删除、替换、插入
() //添加
removeChild() //删除
replaceChild() //替换
insertBefore() //插入
3) 寻找
getElementsByTagName() //通过标签名
getElementsByName() // 传递元素的Name属性的值
getElementById() //通过元素Id,唯一性
5. 写出3个典型的应用程序来使用它
1)、用于html元素的事件属性,如:
2)、构造器
功能动物(名称,颜色){
this.name = 名称;
this.color = 颜色;
}
3)、输入点击,获取值
var btn = 文档。 getElementById("文本");
btn.onclick = function() {
警报(这个。值); //这是按钮元素
}
4)、apply()/call()寻找数组的最大值
var 数字 = [5, 458, 120, -215];
var maxInNumbers = 数学。 最大限度。 应用(这个,数字);
控制台日志(maxInNumbers); // 458
var maxInNumbers = Math.max.call(this,5,458,120,-215);
控制台日志(maxInNumbers); // 458
6.比较typeof和instanceof?
相同点:Java中的typeof和instanceof经常用来判断变量是否为空,或者是什么类型。
typeof的定义和用法:返回值是一个字符串,用来描述变量的数据类型。
细节:
1)、typeof一般只能返回如下结果:
数字、布尔值、字符串、函数、对象、未定义。
2)、typeof获取变量是否存在,如if(typeof a!="undefined"){alert("ok")},而不是使用if(a),因为如果a不存在(未声明),它会出错。
3)对于Array、Null等特殊对象,typeof总是返回object,这是typeof的局限性。
instanceof定义及用法:instanceof用于判断一个变量是否属于一个对象的实例。
示例演示:
a instanceof b?alert("true"):alert("false"); //a 是 b 的一个实例?true 和 false
var a = new Array();
警报(数组实例); // 真的
alert(a instanceof Object) // true
如上,会返回true,alert(a instanceof Object)也会返回true; 这是因为 Array 是 object 的子类。
功能测试(){};
var a = 新测试();
alert(a instanceof test) // true
细节:
(1)如下,得到的结果是'N',这里instanceof测试的对象是指js语法中的对象,不是dom模型对象。
if (window instanceof Object){ alert('Y')} else { alert('N');} // 'N'
7、如何理解闭包?
1)定义及用法:当一个函数的返回值是另一个函数时,如果返回的函数调用其父函数内部的其他变量,如果返回的函数在外部执行,则产生闭包。
2) 表达形式:使函数外部能够调用函数内部定义的变量。
3)举例如下:
(1) 根据作用域链的规则,没有在底层作用域声明的变量会向上一级查找,找到则返回,一直查找直到找不到window的变量,返回undefined . 这里很明显count就是函数内部flag2的计数。
变量计数=10; //全局作用域标记为flag1
函数添加(){
变量计数=0; //函数的全局作用域标记为flag2
返回函数(){
数+=1; //函数的内部作用域
警报(计数);
}
}
变量 s = 添加()
s();//输出1
s();//输出2
4)变量范围
要理解闭包,首先要理解Java特殊的变量作用域。
变量作用域分类:全局变量和局部变量。
特征:
1、函数外的全局变量在函数内可以读取,函数内的局部变量在函数外无法读取。
2.在函数内部声明变量时,一定要使用var命令。 如果你不使用它,你实际上是在声明一个全局变量!
5)使用闭包的注意事项
(1)滥用闭包会造成内存泄漏:因为闭包会导致函数中的变量存放在内存中,内存消耗大,所以不能滥用闭包,否则会导致网页出现性能问题。 在 IE 中可能会导致内存泄漏。 解决方法是在退出函数之前删除所有未使用的局部变量。
(2) 会改变父函数内部变量的值。 所以,如果你把父函数当作一个对象(object),把闭包当作它的公共方法(Public Method),把内部变量当作它的私有属性(private value),那么你一定要注意不要随意更改父函数内部变量的值。
8.谈谈垃圾回收机制和内存管理
回收机制
1. 定义及用法: 垃圾回收机制(GC:Garbage Collection)java中如何去除string的空格,执行环境负责管理代码执行过程中使用的内存。
2.原理:垃圾收集器会周期性地(periodically)找出那些不再被使用的变量,然后释放它们的内存。 但是这个过程不是实时的,因为它的开销比较大,所以垃圾收集器会按照固定的时间间隔周期性的执行。
3.举例如下:
功能 fn1() {
var obj = {name: 'hanzichi', age: 10};
}
功能 fn2() {
var obj = {name:'hanzichi', age: 10};
返回对象;
}
var a = fn1();
var b = fn2();
fn1中定义的obj是一个局部变量,当调用结束,fn1的环境退出时,这块内存会被js引擎中的垃圾回收器自动释放; 调用fn2时,返回的对象是全局变量b所指向的,所以这块内存不会被释放。
4.垃圾收集策略:标记清除(常用)和引用计数。
马克清除:
定义及用法:当变量进入环境时,将该变量标记为“进入环境”,当变量离开环境时,标记为:“离开环境”。 在某一时刻,垃圾回收器会过滤掉环境中的变量和环境变量引用的变量,剩下的就是认为准备好被回收的变量。
目前为止,IE、Firefox、Opera、Chrome、Safari的js实现都采用了mark-and-sweep垃圾回收策略或类似的策略,只是垃圾回收的时间间隔各不相同。
参考计数:
定义和用法:引用计数是跟踪每个值被引用的次数。
基本原理:是对一个变量的引用次数,被引用一次就加1,当引用计数为0时,就认为是一个准备回收的对象。
内存管理
1.垃圾回收什么时候触发?
垃圾收集器定期运行。 如果分配了很多内存,恢复工作就会非常困难。 确定垃圾回收间隔成为一个值得思考的问题。
IE6的垃圾回收是根据内存分配量来运行的。 当环境中的变量、对象和字符串达到一定数量时,就会触发垃圾回收。 垃圾收集器一直在工作,严重影响浏览器性能。
在IE7中,垃圾回收器会根据分配的内存量与程序占用内存的比例动态调整,开始回收。
2、合理的GC方案: (1)、遍历所有可访问对象; (2)、回收不可再访问的对象。
3、GC缺陷: (1)、停止响应其他操作。
4. GC优化策略: (1)、Generation GC; (2)、增量GC。
9、开发过程中遇到的内存泄露如何解决?
一、定义及用法:
内存泄漏意味着一块分配的内存在浏览器进程结束之前既不能使用也不能回收。 C#、Java等语言使用自动垃圾回收来管理内存,几乎不会发生内存泄漏。 我们知道浏览器也会使用自动垃圾回收来管理内存,但是由于浏览器垃圾回收存在bug,所以会出现内存泄漏。
2、内存泄漏的几种情况:
(1) 当页面上的某个元素被移除或替换时,如果该元素绑定的事件还没有被移除,那么在IE中将无法正常处理。 这时候必须先手动移除事件,否则会出现内存泄漏。
举例如下:
var btn = 文档。 getElementById("myBtn");
btn.onclick = function(){
document.getElementById("myDiv").innerHTML = "处理中...";
}
解决方法如下:
var btn = 文档。 getElementById("myBtn");
btn.onclick = function(){
btn.onclick = null;
document.getElementById("myDiv").innerHTML = "处理中...";
}
(2) 由于在函数内部定义了函数,暴露了内部函数-事件回调的引用,形成了闭包。 闭包可以在函数内维护局部变量,使它们不能被释放。
举例如下:
函数绑定事件(){
var obj=document.("XXX");
obj.onclick=函数(){
//即使是空函数
}
}
解决方法如下:
函数绑定事件(){
var obj=document.("XXX");
obj.onclick=函数(){
//即使是空函数
}
对象=空;
}
二、jquery相关
1. jQuery库中的$()是什么?
$() 函数是 jQuery() 函数的另一个名称。 $() 函数用于将任何对象包装到 jQuery 对象中,然后您可以调用定义在 jQuery 对象上的几种不同方法。 您可以将选择器字符串传递给 $() 函数,它将返回一个包含所有匹配 DOM 元素的数组的 jQuery 对象。
2、如何找到所有HTML select标签的选中项?
$('[name=selectname] :selected')
3.jQuery中的$(this)和this关键字有什么区别?
$(this) 返回一个 jQuery 对象,您可以在该对象上调用多个 jQuery 方法java中如何去除string的空格,例如 text() 获取文本,val() 获取值等。
而this代表当前元素,是Java关键字之一,代表上下文中的当前DOM元素。 在将它包装在 $() 函数中之前,您不能对其调用 jQuery 方法,例如 $(this)。
4、jquery如何去除标签的onclick属性?
获取a标签的onclick属性:$("a").attr("onclick")
移除 onclick 属性:$("a").removeAttr("onclick")
设置onclick属性:$("a").attr("onclick","test();")
5、jQuery中addClass、removeClass和toggleClass的使用。
$(selector).addClass(class):为每个匹配的元素添加指定的类名
$(selector).removeClass(class):从所有匹配元素中移除所有或指定的class,并删除class中的一个值;
$(selector).toggleClass(class):删除(添加)一个类,如果它存在(不存在)
$(选择器).removeAttr(类); 删除类属性;
6. JQuery 有多少个选择器?
(1)、基本选择器:#id、class、element、*;
(2)、层级选择器:parent > child, prev + next, prev ~ siblings
(3) 基本过滤器选择器::first, :last, :not, :even, :odd, :eq, :gt, :lt
(4)、内容过滤选择器: :contains , :empty , :has , :parent
(5)、可见性过滤器选择器::hidden, :visible
(6)、属性过滤器选择器:[attribute], [attribute=value], [attribute!=value], [attribute^=value], [attribute$=value], [attribute*=value]
(7)、子元素过滤选择器::nth-child, :first-child, :last-child, :only-child
(8) 表单选择器::input, :text, :password, :radio, :checkbox, :submit等;
(9)、表单过滤器选择器::enabled, :disabled, :checked, :selected
7. jQuery中Delegate()函数的作用是什么?
delegate() 会在以下两种情况下使用:
1)如果有父元素,需要给它的子元素添加事件,那么可以使用delegate(),代码如下:
$("ul").delegate("li", "click", function(){ $(this).hide(); });
2)、当元素在当前页面不可用时,可以使用delegate()
8. $(document).ready()方法和window.有什么区别?
(1) 窗户。 方法在网页中的所有元素(包括元素的所有关联文件)完全加载到浏览器后执行。
(2). $(document).ready() 方法可以在 DOM 加载时操作并调用绑定函数。
9. 如何用 jQuery 禁用浏览器的前进和后退按钮?
实现代码如下:
$(文件)。 准备好(功能(){
window.history.forward(1);
//或 window.history.forward(-1);
});
10.jquery中$.get()提交和$.post()提交有区别吗?
相同点:都是异步请求从服务器获取数据;
共同点和不同点:
1、请求方式不同:$.get()方法使用GET方式进行异步请求。 $.post() 方法使用 POST 方法发出异步请求。
2、参数传递方式不同:get请求会传递URL后面的参数,而POST请求是作为HTTP报文的实体内容发送给web服务器的,这种传递对用户来说是不可见的。
3、传输的数据大小不同:get方法传输的数据大小不能超过2KB,而POST要大很多
4.安全问题:GET方式请求的数据会被浏览器缓存,所以存在安全问题。
11.写一个简单的$.ajax()请求方法?
$.ajax({