2012-10-04 17 views
10

Sass 3.2.1String sostituire in Sass

Come sostituire in stringa una parte del testo? Ad esempio, rimuovere dal colore #fefefe un trattino #, per essere fefefe.

Grazie!

+1

manipolazione String non fa parte del linguaggio di base, ma sembra che potrebbe essere aggiunto in futuro: https://github.com/nex3/sass/pull/401 – cimmanon

+0

Grazie per suggerimento! –

risposta

0

soluzione temporanea semplice (nel mio caso per Mac):

$ git clone -b string_functions https://github.com/chriseppstein/sass 
$ cd sass 
$ sudo rake install 

$ sudo mv /usr/bin/sass /usr/bin/sass.orig 
$ sudo ln -s /Library/Ruby/Gems/1.8/gems/sass-3.2.0.alpha.0/bin/sass /usr/bin/sass 
+1

Vedere la sezione "Aggiunta di funzioni personalizzate" qui: http://sass-lang.com/documentation/Sass/Script/Functions.html – svallory

10

Ecco una funzione che ho appena usato!

SCSS-FUNZIONE

/// Replace `$search` with `$replace` in `$string` 
/// @author Hugo Giraudel 
/// @param {String} $string - Initial string 
/// @param {String} $search - Substring to replace 
/// @param {String} $replace ('') - New value 
/// @return {String} - Updated string 
@function str-replace($string, $search, $replace: '') { 
    $index: str-index($string, $search); 

    @if $index { 
    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); 
    } 

    @return $string; 
} 

SCSS-USO:

.selector { 
    $string: 'The answer to life the universe and everything is 42.'; 
    content: str-replace($string, 'e', 'xoxo'); 
} 

SCSS-RISULTATO:

.selector { 
    content: "Thxoxo answxoxor to lifxoxo thxoxo univxoxorsxoxo and xoxovxoxorything is 42."; 
} 

Source of SCSS-example

Io uso SASS con stile rientrato, quindi questa è la mia conversione per ottenere una variabile di colore da sostituire in uno sfondo con dati: href inline codificato css svg-image. Il # deve essere codificato in url e io uso i colori globali che devono essere sostituiti solo in un posto e semplicemente funzionano!

SASS-FUNZIONE:

@function str-replace($string, $search, $replace: '') 
    $index: str-index($string, $search) 
    @if $index 
    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace) 
    @return $string 

SASS-USO:

$color-blue-night: #172b47  
$icon-normal: str-replace('' + $color-blue-night, '#', '') 

o per un chiaro esempio

.test 
    color: str-replace('' + $color-blue-night, '#', '') 

SASS-RESULT:

.test { 
    color: "172b47"; } 
Problemi correlati