1

我正在阅读一个包含大约 1200 个单词的文件,格式如下:

词:a:/zenb:/fixx:/wew:/sina:/benb:/sixx:/hew:/bin

我需要找到该文本文件中有多少关键字,我的意思是关键字:

禅修我们罪本六和斌

现在我正在尝试像这样使用 RegExp 来做到这一点:

var s:String = "words:b:sa:/zenb:/fixx:/wew:/sina:/benb:/sixx:/hew:/bin";
var pattern:RegExp = /:/+/g;
var results:Array = s.match(pattern);
trace(results.length); 

它产生一个错误,因为我是一个初学者,我真的不明白这个 RegExp 是如何工作的,有没有其他方法可以得到相同的结果?

谢谢

4

2 回答 2

2

var pattern:RegExp = /:/+/g;有语法错误,您跳过了反斜杠,将其\更改为:

var pattern:RegExp = /:\/+/g;

它应该可以工作,或者使用这种格式,您可以使用字符串拆分方法来获取总字数。尝试这个:

var s:String = "words:b:sa:/zenb:/fixx:/wew:/sina:/benb:/sixx:/hew:/bin";
var wordCount:Number = s.split(":/").length -1;
trace( wordCount );

希望有效。

于 2012-12-22T00:00:14.047 回答
0
package
{
    import flash.display.Sprite;

    public class CountWordsExample extends Sprite
    {
        public function CountWordsExample()
        {
            super();
            // 8 7 0
            trace(countWords(
                "words:b:sa:/zenb:/fixx:/wew:/sina:/benb:/sixx:/hew:/bin",
                ":/"),
                countWords(
                    "words:b:sa:/:/fixx:/wew:/sina:/benb:/sixx:/hew:/bin",
                    ":/"),
                countWords(
                    "words:b:sa::zenb::fixx::wew::sina::benb::sixx::hew::bin",
                    ":/"));
        }

        public static function countWords(words:String, delimiter:String, 
                                          countBlanks:Boolean = false):uint
        {
            var result:uint;
            var wordPointer:int = -1;
            var delimiterPointer:int;
            var delimiterLength:uint = delimiter.length;

            if (words.length >= delimiterLength)
            {
                do
                {
                    delimiterPointer = wordPointer;
                    wordPointer = words.indexOf(
                        delimiter, wordPointer + delimiterLength);
                    if (countBlanks || 
                        // we moved by more characters, then the length of
                        // delimiter
                        wordPointer - delimiterLength > delimiterPointer) 
                        result++;
                }
                while (wordPointer > -1)
            }
            return result;
        }
    }
}

这是一个如何在不创建原始字符串的其他数组或子字符串的情况下计算单词的示例。它还验证计数的单词是否具有至少一个字符长度。

于 2012-12-22T08:37:50.053 回答