0

文字列内の部分文字列を置き換えようとしています。以下の私のコードは、部分文字列のすべての出現を置き換えます。たとえば、 をクリックする、 の両方が置き換えられます。しかし、クリックしたものだけを置き換えるのが好きです。どうすればこれを行うことができますか?

本は私部屋のテーブルにあります。

          function correct(e:TextEvent):void{
                str =String(e.currentTarget.htmlText);
                if(e.text==replacements[e.currentTarget.name]){
                    e.currentTarget.htmlText =strReplace(str, e.text,    corrections[e.currentTarget.name]);
                }
        }


         function strReplace(str:String, search:String, replace:String):String {
             return str.split(search).join(replace);
        }
4

1 に答える 1

0

TextField.getCharIndexAtPoint(x:Number, y:Number):int特定の座標で char の (0 ベースの) インデックスを取得するために使用できます。

明らかに、クリックしたポイントを(x, y)として使用する必要があります。

イベントからlocalXとを使用できます。localYTextField.click

詳細については、http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextField.html#getCharIndexAtPoint%28%29を参照してください。

この時点で、クリックした文字の近くで置換する文字列を検索する必要があります。

たとえば、次のようなものです。

stringToReplace = "in";

len = stringToReplace.Length;

neighborhood = TextField.substring(clickedCharIndex-len, clickedCharIndex+len);

if (neighborhood.indexOf(stringToReplace)) {

    neighborhood = neighborhood.replace(stringToReplace, replacement);

    TextField.text = TextField.text(0, clickedCharIndex-len) + neighborhood +
                     TextField.text(clickedCharIndex+len);

}
于 2013-01-21T10:06:19.453 に答える