ActionScript 3 .replace () заменяет только первый экземпляр - PullRequest
17 голосов
/ 21 марта 2012

Во Flash ActionScript 3 я пытаюсь сделать то, что мне показалось простым: заменить все вхождения фразы в текстовой строке другой фразой.Однако по какой-то причине заменяется только первый экземпляр, а остальные игнорируются.Я взломал решение вместе, пропустив его через функцию замены строки около 9 раз, так что конечный результат заменил все <br />, но я хотел бы знать, что я сделал неправильно.Заранее спасибо!

Мой код:

var importPostAddress = "123 Fake Street<br />Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />";
var postAddress = importPostAddress.replace("<br />",", ");

Ожидаемый результат при трассировке postAddress:

123 Fake Street, Mytown, Mycounty, Mycountry, PO5 7CD, , 

Фактический результат:

123 Fake Street, Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />

Ответы [ 2 ]

29 голосов
/ 21 марта 2012

Чтобы это исправить, вам нужно проделать немного больше работы.

var importPostAddress = "123 Fake Street<br />Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />";
var pattern:RegExp = /<br \/>/g;
var postAddress = importPostAddress.replace(pattern,", ");

Я использую RegExp, чтобы передать флаг / g , который заменяет global (замените все найденные выражения). Мне также пришлось экранировать / в <br />, используя обратную косую черту \ в качестве управляющего символа в регулярных выражениях.

22 голосов
/ 21 марта 2012

У Сэма хорошее решение, другое:

postAddress = importPostAddress.split("<br />").join(",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...