1

AS2では、次のことができます。

String.prototype.startsWith = function(s){
     return this.indexOf(s) == 1
}

したがって、startsWithすべてのStringオブジェクトで使用できます

var s = "some string to test with";
s.startsWith("some") // returns true

そして、クールなツールの素晴らしいリポジトリでそれを行いました:

var s = "some @VAR string";
s.startsWith("some");//returns true
s.endsWith("ing");//returns true
s.contains("@");//returns true
s.dataBind({VAR: "awsome"})// returns 'some awsome string'
s = "b";
s.isAnyOf("a","b","c"); //true, because "b" is one of the options
s.isInArr(["a","b","c"]); //true, because "b" is in the passed array
var o = { foo: function(i) { return "wind " + i } }
s = "foo";
f.call(o,3) //returns "wind 3" because method foo is ivoked on o with 3
f.apply(o,[3]) //returns "wind 3" because method foo is ivoked on o with 3
var a1 = [], a2 = []
s.push(a1,a2) // pushes s into a1 and a2

などなど、コーディングをはるかに楽しくする(そしてスマートに使用すると非常に速く燃える)多くのクールなものがあります

文字列だけでなく、数値、日付、ブール値などのユーティリティがあります。

これが私が試したことです:

[Test]
public function test_stringPrototype()
{
    String.prototype.startsWith = function(s):Boolean
    {
        return return this.indexOf(s) == 1;
    }

    assertTrue( !!String.prototype.startsWith ) //and so far - so good ! this line passes

    var s:String = "some str";
    assertTrue(!!o.startsWith ) //and this won't even compile... :(
}

そして、これはコンパイルすらしません。テストに合格または不合格になることは言うまでもありません...エラー:Access of possibly undefined property startsWith through a reference with static type String.

AS3でそれを行う方法は何ですか?

4

2 に答える 2

1

これらすべてのメソッドを収集し、文字列を処理するユーティリティクラスを常に持つことができます。

package utils
{
    public class StringUtils
    {
        public static function startsWith(input:String, test:String):Boolean
        {
            return input.indexOf(test) == 0;
        }
    }
}

利用方法:

trace(StringUtils.startWith("My string", "My"));

または「グローバル」関数として:

package utils
{
    public function startsWith(input:String, test:String):Boolean
    {
        return input.indexOf(test) == 0;
    }
}

利用方法:

trace(startWith("My string", "My"));

よろしくお願いします

于 2013-02-20T14:03:11.753 に答える
0

はい、もちろん、変数名の文字列表現を使用してください: "startsWith"; 例ダウン

        String.prototype.traceME = function():void
        {
            trace(this);
        }

        var s:String = "some str";
        s["traceME"]();

elseメソッド:

            var s:Object = new String("some str");
            s.traceME();
于 2013-02-20T12:51:45.770 に答える