создать массив слов (строк) из строки - PullRequest
2 голосов
/ 25 июня 2010

Как мне создать массив строк из строки, например.

"hello world" вернется ["hello", "world"]. Это должно учитывать знаки препинания и т. Д.

Вероятно, для этого есть отличное решение RegEx, я просто не могу его найти.

Ответы [ 7 ]

2 голосов
/ 28 июня 2010

Думаю, я это взломал, вот функция полностью:

public static function getArrayFromString(str:String):Array {
        return str.split(/\W | ' | /gi);
    }

По сути, он использует условие «не слово», но исключает апострофы, является глобальным и игнорирует регистр. Спасибо всем, кто указал мне правильное направление.

2 голосов
/ 26 июня 2010

Как насчет String.split в AS3?

var text:String = "hello world";
var split:Array = text.split(" "); // this will give you ["hello", "world"]
// then iterate and strip out any redundant punctuation like commas, colons and full stops
1 голос
/ 08 марта 2012

Вот что вам нужно. Проверено и работает:

private function splitString(str:String):Array {
    var r:RegExp = /\W+/g;
    return str.split(r));
}

http://snipplr.com/view/63811/split-string-into-array/

1 голос
/ 05 сентября 2011

Может быть, этот тоже работает ...

public static function getArrayFromString(str:String):Array {
    return str.split(/[^,\.\s\n\r\f¿\?¡!]+/gi);
    }

Это должно работать, например, на других языках, кроме английского (т. Е. '\ W' не будет принимать символы с акцентом, например ...)

1 голос
/ 25 июня 2010

По какой-либо причине:

var myString:String = "hello world";

var reg:RegExp = /\W/i;

var stringAsArray:Array = myString.replace(reg, "").split(" ");

Не сработает?

0 голосов
/ 29 июня 2010

Я думаю, вы можете захотеть что-то вроде этого:

public static function getArrayFromString(str:String):Array {
    return str.split(/[\W']+/gi);
}

По сути, вы можете добавить любые символы, которые вы хотите считать разделителями, в квадратных скобках. Вот как работают кусочки:

  1. Скобки определяют набор символов.
  2. В скобках указаны символы в наборе (где \ W означает "не слово")
  3. Знак плюс означает «один или несколько из предыдущего элемента» - в данном случае набор символов. Таким образом, если у вас есть что-то с несколькими символами подряд, вы не получите пустые элементы в вашем массиве.
0 голосов
/ 26 июня 2010

Это похоже на то, что вы хотите:

package
{
import flash.display.Sprite

public class WordSplit extends Sprite
{
    public function WordSplit()
    {
        var inText:String = "This is a Hello World example.\nIt attempts,\
            to simulate! what splitting\" words ' using: puncuation\tand\
            invisible ; characters ^ & * yeah.";

        var regExp:RegExp = /\w+/g;
        var wordList:Array = inText.match(regExp);

        trace(wordList);
    }
}
}

Если нет, предоставьте образец спецификации ввода и вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...