обрезка строк с помощью ActionScript 3 - PullRequest
15 голосов
/ 26 мая 2010

Я пытаюсь обрезать пробелы в начале и конце строки. Похоже, as3 не имеет функции обрезки. Кто-нибудь знает, как это можно сделать?

Ответы [ 7 ]

24 голосов
/ 26 мая 2010

У вас есть метод с именем trim в служебном классе с именем StringUtil => http://livedocs.adobe.com/flex/3/langref/mx/utils/StringUtil.html#trim%28%29

6 голосов
/ 26 мая 2010
str = str.replace(/^\s+|\s+$/g, '');
3 голосов
/ 26 мая 2010

Вы проверяли документацию Adobe? http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/String.html

package {
import flash.display.Sprite;

public class StringExample extends Sprite {
    public function StringExample() {
        var companyStr:String = new String("     Company X");
        var productStr:String = "Product Z Basic     ";
        var emptyStr:String = " ";
        var strHelper:StringHelper = new StringHelper();

        var companyProductStr:String = companyStr + emptyStr + productStr;
        trace("'" + companyProductStr + "'");    // '     Company X Product Z Basic     '

        companyProductStr = strHelper.replace(companyProductStr, "Basic", "Professional");
        trace("'" + companyProductStr + "'");    // '     Company X Product Z Professional     '

        companyProductStr = strHelper.trim(companyProductStr, emptyStr);
        trace("'" + companyProductStr + "'");    // 'Company X Product Z Professional'
    }
}

}

class StringHelper {

public function StringHelper() {
}

public function replace(str:String, oldSubStr:String, newSubStr:String):String {
    return str.split(oldSubStr).join(newSubStr);
}

public function trim(str:String, char:String):String {
    return trimBack(trimFront(str, char), char);
}

public function trimFront(str:String, char:String):String {
    char = stringToCharacter(char);
    if (str.charAt(0) == char) {
        str = trimFront(str.substring(1), char);
    }
    return str;
}

public function trimBack(str:String, char:String):String {
    char = stringToCharacter(char);
    if (str.charAt(str.length - 1) == char) {
        str = trimBack(str.substring(0, str.length - 1), char);
    }
    return str;
}

public function stringToCharacter(str:String):String {
    if (str.length == 1) {
        return str;
    }
    return str.slice(0, 1);
}

}

ОБНОВЛЕНИЕ: О, только что увидел ItzWarty. -.-

2 голосов
/ 20 августа 2014

Попробуйте это

str = StringUtil.trim(str);
2 голосов
/ 26 мая 2010

Посмотрите на http://jeffchannell.com/ActionScript-3/as3-trim.html

function trim( s:String ):String
{
  return s.replace( /^([\s|\t|\n]+)?(.*)([\s|\t|\n]+)?$/gm, "$2" );
}

http://www.designscripting.com/2008/11/string-utils-in-as3/ имеет тонну вспомогательных функций строки, включая обрезку строки

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

Решение ItzWarty не удаляет завершающие пробелы.

Решение Амаргоша отлично работает для меня, и также дается в http://jeffchannell.com/ActionScript-3/as3-trim.html.

К сожалению, у меня недостаточно репутации, чтобы проголосовать за решение Амаргоша.

Кроме того, мне пришлось удалить двойные кавычки, так что вот моя отделка:

function trim( s:String ):String
{
  return s.replace(/^[\s|"]+|[\s|"]+$/gs, '');
}
1 голос
/ 26 мая 2010

Вы должны быть в состоянии использовать регулярные выражения, что-то вроде:

var pattern:RegExp = /(\t|\n|\s{2,})/g;  
trimmedString = untrimmedString.replace(pattern, '');  
...