如果字符串包含或结尾,SASS中是否有办法?

Sha*_*ain 7 sass

我需要像sass这样的if语句:

@each $name, $char in $font-icons {
    @if ($name ends with "-outline") {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Kod*_*ham 13

不完全是你想要的,但我认为它与你可以与Sass一样接近.

使用str-index($string, $substring)你可以找出是否$name包含-outline:

@each $name, $char in $font-icons {
    @if (str-index($name, '-outline')) {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:刚写了一个快速的Sass函数来实际找出字符串是否以另一个字符串结束:

@function ends-with($string, $find) {
  @if (str-index($string, $find) == (str-length($string) - str-length($find) + 1)) {
    @return true;
  } @else {
    @return false;
  }
}

@each $name, $char in $font-icons {
    @if (ends-with($name, '-outline')) {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

更新#2:如果$string包含$find多次,上面的函数将返回false .如果$string真正以以下结尾,此函数将返回true $find:

@function ends-with($string, $find) {
  @if (str-slice($string, (str-length($string) - str-length($find) + 1)) == $find) {
    @return true;
  } @else {
    @return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

更新#3:简化:

@function ends-with($string, $find) {
  @return str-slice($string, (str-length($string) - str-length($find) + 1)) == $find;
}
Run Code Online (Sandbox Code Playgroud)