在ActionScript 3中获取indexOf特殊字符

时间:2012-02-27 17:59:42

标签: string actionscript-3 special-characters indexof quote

在ActionScript3中,我希望使用输入索引值从某些HTML中获取2个引号之间的文本,其中我只是将第2个引号字符值增加1.这将非常简单但是我现在注意到使用indexOf似乎不使用引号和其他特殊字符正确工作。

所以我的问题是你是否有这样的HTML样式文本:

var MyText:String = '<div style="text-align:center;line-height:150%"><a href="http://www.website.com/page.htm">'; 

如何才能正确获取引用索引“或其他特殊字符?

目前我试试这个:

MyText.indexOf('"',1)

但在0之后它总是返回错误的索引值。

另外一个快速的问题是,有没有比使用''存储字符串更好的方式,比如“内部?所以如果我有其他'字符等,它不会导致问题。

编辑 -

这是我创建的函数(用法= GetQuote(MyText,0)等)

        // GetQuote Function (Gets the content between quotes at a set index value)
        function GetQuote(Input:String, Index:Number):String {
            return String(Input.substr(Input.indexOf('"', Index), Input.indexOf('"', Index + 1)));
        }

GetQuote(MyText,0)的返回是“text-align但我需要text-align:center; line-height:150%而不是。

1 个答案:

答案 0 :(得分:1)

首先,第一个引号的索引是11,MyString.indexOf('"')MyString.indexOf('"',1)都返回正确的值(后者也有效,因为你的字符串开头实际上没有引号)。

当您需要在另一个内部使用单引号或在另一个内部使用双引号时,您需要使用反斜杠转义内部引号。因此,要抓住单引号,您可以使用'\''

有几种方法可以从字符串中删除值。您可以使用 RegExp 类或使用标准字符串等函数,例如indexOfsubstr等。

现在你想要的结果是什么?你的问题不明显。

修改

使用RegExp类更容易:

var myText:String = '<div style="text-align:center;line-height:150%"><a href="http://www.website.com/page.htm">';

function getQuote(input:String, index:int=0):String {
// I declared the default index as the first one
    var matches:Array = [];
    // create an array for the matched results
    var rx:RegExp = /"(\\"|[^"])*"/g;
    // create a RegExp rule to catch all grouped chars
    // rule also includes escaped quotes
    input.replace(rx,function(a:*) {
        // if it's "etc." we want etc. only so...
        matches.push(a.substr(1,a.length-2));
    });
    // above method does not replace anything actually.
    // it just cycles in the input value and pushes
    // captured values into the matches array.
    return (index >= matches.length || index < 0) ? '' : matches[index];
}

trace('Index 0 -->',getQuote(myText))
trace('Index 1 -->',getQuote(myText,1))
trace('Index 2 -->',getQuote(myText,2))
trace('Index -1 -->',getQuote(myText,-1))

<强>输出:

  

索引0 - &gt;文本对齐:中心;行高:150%
  索引1 - &gt; http://www.website.com/page.htm
  索引2 - &gt;
  索引-1 - &gt;