Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中修剪()的最佳方法是什么_Javascript_Jquery_String - Fatal编程技术网

在javascript中修剪()的最佳方法是什么

在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

问题说明了一切;JS似乎没有本机trim()方法

根据最全面的方法是

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或未定义

Microsoft.NET还具有作为JavaScript基本类型扩展的一部分的功能。如果您正在编写ASP.NET应用程序,可以使用它。

为什么不修改字符串原型?为什么不从开源库中窃取trim函数,就像我在这里使用YUI一样?(您真的需要为这个简单的TAK加载整个框架吗?)

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()速度较慢,原因不明)

这可能不是最快的,并且可能违反“.trim()”可能真正应该做的,但我不喜欢正则表达式(主要是因为它需要花费太多时间来理解它们的真正含义/作用),我喜欢有一些我知道可以工作的东西,不管我是否有jQuery(更不用说正确的版本了,因为我在jQuery 1.4.2中尝试了$.trim(myVar),但它不起作用),并且将消除所有额外的空间,而不仅仅是在最后,按原样重建它:

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());