在javascript中修剪()的最佳方法是什么
问题说明了一切;JS似乎没有本机trim()方法 根据最全面的方法是在javascript中修剪()的最佳方法是什么,javascript,jquery,string,Javascript,Jquery,String,问题说明了一切;JS似乎没有本机trim()方法 根据最全面的方法是 return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 当然,如果您使用jQuery,它将为您提供一种优化的修剪方法。众多JavaScript问题的答案是:jQuery $j.trim(string) 注意:以上假设您的jQuery已使用以下设置: <script type="text/javascript">$j = jQuery.noConflict
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
当然,如果您使用jQuery,它将为您提供一种优化的修剪方法。众多JavaScript问题的答案是:jQuery
$j.trim(string)
注意:以上假设您的jQuery已使用以下设置:
<script type="text/javascript">$j = jQuery.noConflict();</script>
$j=jQuery.noConflict();
这比“$”更合理,比每次键入“jQuery”要简单得多。一个稍微小一点的@Pat版本
return str.replace( /^\s+|\s+$/g, '' );
对于ltrim,将锚定在字符串开头的空格替换为零:
str2 = str.replace(/^\s+/,'');
str2 = str.replace(/\s+$/,'');
对于rtrim,将锚定在字符串末尾的空格替换为零:
str2 = str.replace(/^\s+/,'');
str2 = str.replace(/\s+$/,'');
对于修剪:
str2 = str.replace(/^\s+|\s+$/g,'');
这些都使用正则表达式来完成实际工作。正如其他一些人已经指出的那样,通常最好使用第三方JS库来完成这类工作。并不是说trim()是一个需要自己构建的复杂函数,而是有太多的函数不是JavaScript所固有的,您可能需要并最终自己编写,使用库很快就会变得更加经济划算
当然,使用JS库的另一个好处是,作者努力确保这些函数在所有主要浏览器中都能工作,这样您就可以编写标准界面的代码,忘记Internet Explorer和所有其他浏览器之间令人恼火的差异。实际上,对于jQuery,这似乎是一种方式:
jQuery.trim(string)
jQuery的最短表单:
string = $.trim(string);
正如很多人常说的那样,trim函数工作得很好,但是如果您不想使用整个框架来执行trim,那么看看它的实现可能会很有用。这就是:
function( text ) { return (text || "").replace( /^(\s|\u00A0)+|(\s|\u00A0)+$/g, "" );}
与这里已经提出的其他解决方案相比,我在该实施中看到的主要优势是:
- 允许您对多行字符串执行修剪的“g”标志
- (text | | |“”)语法,确保函数始终工作,即使传递的参数为null或未定义
String.prototype.trim = function() {
try {
return this.replace(/^\s+|\s+$/g, "");
} catch(e) {
return this;
}
}
var s = " hello ";
alert(s.trim() == "hello"); // displays true
我用这个
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
使用:
我用这个:
使用函数
function trim($) {
return (typeof $ == "function" ? $() : $).replace(/[\s]*/g,"")
}
code example:
trim((function(){ return "a b"})) // ab
trim(" a b") //ab
你可以使用下面的
function trim(str) {
try {
if (str && typeof(str) == 'string') {
return str.replace(/^\s*|\s*$/g, "");
} else {
return '';
}
} catch (e) {
return str;
}
}
我在脑海中做了一个微调功能。这个函数与所有24个竞争者(其中许多使用正则表达式)以及Chrome和Chrome的原生string.trim()都有明显的不同,它的执行速度与Safari的trim()一样快。测试结果如下: 上面的mytrim()执行以下操作:
- 修剪26个不同的空格(所有25个空格都在uFEFF中提到,另外还有uFEFF,它是零宽度的不间断空格)
- 使修剪结果在浏览器之间保持一致
- 如果可用,则使用本机trim(),并能够修剪所有27个不同的空白。例外是Chrome和Chrome,它们的本机trim()速度都非常慢,因此我们使用自定义修剪来代替本机修剪
- 最重要的一点是:它不漂亮也不短,但显然比中的24个竞争对手中的任何一个都快(例外:Windows7中的Firefox 3.6.25运行mytrim()速度较慢,原因不明)
function Trim(obj) {
var coll = "";
var arrObj = obj.split(' ');
for (var i=0;i<arrObj.length;i++) {
if (arrObj[i] == "") {
arrObj.splice(i,1); // removes array indices containing spaces
}
}
//alert(arrObj.length); // should be equal to the number of words
// Rebuilds with spaces in-between words, but without spaces at the end
for (var i=0;i<arrObj.length;i++) {
if (arrObj[i] != "" && i != arrObj.length-1)
coll += arrObj[i] + " ";
if (arrObj[i] != "" && i == arrObj.length-1)
coll += arrObj[i];
}
return coll;
}
功能微调(obj){
var coll=“”;
var arrObj=对象拆分(“”);
对于(var i=0;i我知道这个问题很古老,但现在,Javascript实际上有一个native.trim()
这是一个老问题,但这些问题对我都不起作用。我只需要修剪前导和尾随的空白,我就是这么做的。我的div标签的id=开始日期
$("#start-date").text().trim()
我将其用于本机JavaScript
// Adding trim function to String object if its not there
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}
像这样使用
var myString = " some text ";
alert(myString.trim());
示例
//如果字符串对象不存在,则向其添加修剪函数
if(typeof String.prototype.trim!=“函数”){
String.prototype.trim=函数(){
返回此。替换(/^\s+|\s+$/g,');
}
}
var str=“一些文本”;
console.log(str.trim());
谢谢你给出了这么好的答案。我认为没有一个答案比其他答案更好,所以我能让民主来决定而不是“接受答案”吗?民主将通过计票来决定,但您仍然可以选择您最终使用的一个作为问题的答案-它们是两个稍有不同的概念。我认为您需要在方法调用中的文本上执行这一点。;)jQuery对象。远比仅使用$.$j=jQuery.noConflict()明智得多;为什么$j
比$
更合理?根据链接页面,\s+和\s\s*之间的唯一区别是后者的速度稍快。如果您进一步阅读,文章末尾提到的修改后的trim11是处理较长字符串的更好方法。这是一个旧线程,同时实现了本机trimPat的正则表达式和Chris MacDonald提到trim11非常慢,而且jquery的trim在某些浏览器中也非常慢()。更快的trim实现在这里:g
标志在这里没有m$("#start-date").text().trim()
// Adding trim function to String object if its not there
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}
var myString = " some text ";
alert(myString.trim());