0

在 ActionScript3 中,我想使用输入索引值从一些 HTML 中获取两个引号之间的文本,我只需将第二个引号字符值增加 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% 代替。

4

1 回答 1

1

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

当您需要在另一个引号内使用单引号或在另一个引号内使用双引号时,您需要使用反斜杠转义内部引号。所以要抓住一个单引号,你会像这样使用它'\''

有几种方法可以从字符串中剥离值。您可以使用RegExp类或使用标准String函数,如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 --> text-align:center;line-height:150%
索引 1 --> http://www.website.com/page.htm
索引 2 -->
索引 -1 -->

于 2012-02-27T18:30:23.487 回答