2010-05-26 3 views
15

J'essaye de découper des espaces blancs de l'avant et de l'extrémité d'une chaîne. On dirait que as3 n'a pas de fonction de trim. Quelqu'un sait-il comment cela peut-il être fait?Rognage des chaînes avec actionscript 3

+10

Chose curieuse, je suis arrivé à cette page en googler;) –

+11

Je ne suis pas fan de cette toute l'attitude «juste google it» qui se passe de plus en plus sur SO. Trawling à travers des blogs aléatoires pour des bribes d'informations n'est pas la même que d'obtenir l'aide collective d'une ressource de programmation comme SO - SO est conçu pour que les bonnes réponses flottent au sommet sur la base des opinions de nombreux, pas un seul blogueur. – Chris

+1

@Chris et Hendy, j'ai également obtenu ici de Google. – BajaBob

Répondre

1

Vous devriez être en mesure d'utiliser regex, quelque chose comme:

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

Avez-vous consulter la documentation d'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' 
    } 
} 

}

classe 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); 
} 

}

MISE À JOUR: Oh juste vu ItzWarty. -.-

6
str = str.replace(/^\s+|\s+$/g, ''); 
1

solution de ItzWarty ne supprime pas les espaces de fin.

La solution d'Amargosh fonctionne parfaitement pour moi, et est également donnée au http://jeffchannell.com/ActionScript-3/as3-trim.html.

Malheureusement, je n'ai pas assez de réputation pour voter pour la solution d'Amargosh.

De plus j'ai dû enlever doublequotes donc voici mon assiette:

function trim(s:String):String 
{ 
    return s.replace(/^[\s|"]+|[\s|"]+$/gs, ''); 
} 
2

Essayez cette

str = StringUtil.trim(str);