• JS String类型


    一.String类型

    1.字符串位置方法:indexOf()

    搜索给定的子字符串,然后返回子字符串的位置(没有找到该子字符串,返回-1);可接受第二个参数表示从子字符串中的哪个位置开始搜索。

    例子:可以通过循环调用indexOf来找到所有匹配的子字符串。

    var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";

            var positions = new Array();        //var positons=[]

            var pos = stringValue.indexOf("e");

           

            while(pos > -1){

                positions.push(pos);

                pos = stringValue.indexOf("e", pos + 1);

            }

               

            alert(positions);    //"3,24,32,35,52"

     

    2.字符串操作方法比较

    slice() 方法可从已有的数组中返回选定的元素。

    语法:arrayObject.slice(start,end)

    返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

    Substr():可在字符串中抽取从 start 下标开始的指定数目的字符。

    语法:stringObject.substr(start,length)

    注释:substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。

    Substring():

    substring() 方法用于提取字符串中介于两个指定下标之间的字符,

    语法:stringObject.substring(start,stop)。

    返回值:一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

    重要事项:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。

    实例比较:

    var stringValue = "hello world";

            alert(stringValue.slice(3));        //"lo world"

            alert(stringValue.substring(3));    //"lo world"

            alert(stringValue.substr(3));       //"lo world"

            alert(stringValue.slice(3, 7));     //"lo w"

            alert(stringValue.substring(3,7));  //"lo w"

            alert(stringValue.substr(3, 7));    //"lo worl"

           

            alert(stringValue.slice(-3));         //"rld"

            alert(stringValue.substring(-3));     //"hello world"

            alert(stringValue.substr(-3));        //"rld"

            alert(stringValue.slice(3, -4));      //"lo w"

            alert(stringValue.substring(3, -4));  //"hel"

            alert(stringValue.substr(3, -4));     //"" (empty string)

    3.字符串的模式匹配方法

    1.match

    定义和用法:match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

    该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

    语法:stringObject.match(searchvalue)

    stringObject.match(regexp)

     

    如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本

    如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。

    var text = "cat, bat, sat, fat";

            var pattern = /.at/;

           

            var matches = text.match(pattern);       

            alert(matches.index);        //0

            alert(matches[0]);           //"cat"

            alert(pattern.lastIndex);    //0

    2.search

    search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

    返回值:stringObject 中第一个与 regexp 相匹配的子串的起始位置。

    注释:如果没有找到任何匹配的子串,则返回 -1。

    语法:stringObject.search(regexp)

    说明:search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

    .3.replace

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    语法:stringObject.replace(regexp,replacement)

    返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

    说明:如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

     

    4.split()

    split() 方法用于把一个字符串分割成字符串数组。

    语法:stringObject.split(separator,howmany)

    1.内置对象

    Math对象random方法

    例1:var num = Math.floor(Math.random() * 9 + 2);

            alert(num);    //a number between 2 and 10

    例2:

      function selectFrom(lowerValue, upperValue) {

                var choices = upperValue - lowerValue + 1;

                return Math.floor(Math.random() * choices + lowerValue);

            }

           

            var num = selectFrom(2, 10);

            alert(num);   //number between 2 and 10 (inclusive)

            从数组中随机取出一个值:

            var colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"];

            var color = colors[selectFrom(0, colors.length-1)];

            alert(color);  //any of the strings in the array

    1. 作为值的函数

    函数本身就是变量 ,可以作为值来使用。

    function callSomeFunction(someFunction, someArgument){

                return someFunction(someArgument);

            }

            function add10(num){

                return num + 10;

            }

            var result1 = callSomeFunction(add10, 10);

            alert(result1);   //20

            function getGreeting(name){

                return "Hello, " + name;

            }  

            var result2 = callSomeFunction(getGreeting, "Nicholas");

            alert(result2);   //Hello, Nicholas

    访问函数的指针而不执行函数的话,必须去掉函数名后面的圆括号。

    可以从一个函数中返回另一个函数:

    function createComparisonFunction(propertyName) {

                return function(object1, object2){

                    var value1 = object1[propertyName];

                    var value2 = object2[propertyName];

                            if (value1 < value2){

                        return -1;

                    } else if (value1 > value2){

                        return 1;

                    } else {

                        return 0;

                    }

                };

            }

            var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];

           

            data.sort(createComparisonFunction("name"));

            alert(data[0].name);  //Nicholas

           

            data.sort(createComparisonFunction("age"));

            alert(data[0].name);  //Zachary  

    1. 函数内部属性

    在函数内部,有两个特殊的属性:argument和this

    arguments 对象

    在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。Argument是一个类数组对象,包含着传入参数中的所有参数。

    虽然argument的主要用途是保存函数参数,但这个对象还有一个callee的属性,该属性是一个指针,指向拥有这个argument对象的函数。

    还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

    This  

    关键字 this 总是指向调用该方法的对象 

    使用 this,即可在任何多个地方重用同一个函数。请思考下面的例子:

    function showColor() {

      alert(this.color);
    };
    var oCar1 = new Object;
    oCar1.color = "red";
    oCar1.showColor = showColor;
     
    var oCar2 = new Object;
    oCar2.color = "blue";
    oCar2.showColor = showColor;
     
    oCar1.showColor();             //输出 "red"
    oCar2.showColor();             //输出 "blue"
     
     

    注意,引用对象的属性时,必须使用 this 关键字。例如,如果采用下面的代码,showColor() 方法不能运行:

    function showColor() {
      alert(color);
    };

    如果不用对象或 this 关键字引用变量,ECMAScript 就会把它看作局部变量或全局变量。然后该函数将查找名为 color 的局部或全局变量,但是不会找到。结果如何呢?该函数将在警告中显示 "null"。

    1. 函数属性和方法

    每个函数都含有两个属性length和prototype

  • 相关阅读:
    inflate用一个XML源填充view. LayoutInflater
    关于inflate的第3个参数
    关于inflate的第3个参数
    android ImageView scaleType属性
    android ImageView scaleType属性
    Android中设置文本颜色的三种方法
    JDK1.8与spring3.x的不兼容
    Spring整合activiti单元测试
    良好编程习惯的养成
    No output operations registered, so nothing to execute
  • 原文地址:https://www.cnblogs.com/peng14/p/2668209.html
Copyright © 2020-2023  润新知