Интерполировать строку, полученную из файла? [Дубликат]

Для этого вам нужно указать font-weight:900 (или любое значение, большее 600, bold или bolder).

.myClass {
  visibility: hidden;
}

.myClass::after {
  font-family: 'Font Awesome 5 Free';
  content: "\f008";
  visibility: visible;
  font-weight: 900;
}

Movies

Поскольку regular является PRO и вам нужен solid один:

https://fontawesome.com/icons/film?style= solid

Почему работает другая иконка?

Поскольку \f007 - это значок: https://fontawesome.com/icons/user?style=regular , и, как вы можете видеть, regular не PRO, поэтому вам не нужно указывать font-weight. Вам нужно указать его только тогда, когда вы хотите показать solid.

.myClass::after {
  font-family: 'Font Awesome 5 Free';
  content: "\f007";
  visibility: visible;
  font-weight: 900;
}

.myClass-1::after {
  font-family: 'Font Awesome 5 Free';
  content: "\f007";
  visibility: visible;
}

Solid 

Regular

В качестве побочного примечания , все версии light являются PRO, поэтому для них в свободном пакете нет font-weight.


Вы можете проверить документацию для более подробной информации: https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements

19
задан Broots Waymb 2 September 2015 в 18:32
поделиться

5 ответов

Нет, вы не можете использовать строчную интерполяцию с чем-то отличным от строкового литерала, так как компилятор создает строку «обычного» формата даже при использовании интерполяции строк.

Поскольку это:

string name = "bar";
string result = $"{name}";

скомпилировано в это:

string name = "bar";
string result = string.Format("{0}", name);

строка во время выполнения должна быть «обычной» строкой формата, а не Строковый интерполяционный эквивалент.

Вместо этого вы можете использовать простой старый String.Format.

28
ответ дан i3arnon 23 August 2018 в 21:46
поделиться

Больше идеи, противоположной ответу.

В примере, показанном в вопросе, вы можете сделать следующее.

var format = "URL: ";
...
var url = "http://google.com";
...
var result= $"{format} {url}";

У меня есть реальный проект, где Я должен сделать что-то подобное:

var label = "Some Label";
var value = "SomeValue";

//both label & value are results of some logic

var result = $"{label}: {value}";

Надеюсь, это кому-то поможет.

0
ответ дан Dimskiy 23 August 2018 в 21:46
поделиться

Кажется, что вы можете сделать это следующим образом:

var googleUrl = "http://google.com";
var url = $"URL: {googleUrl}";

System.Console.WriteLine(url);

Вы можете проверить более подробную информацию в https://msdn.microsoft.com/en-us/library/dn961160 .aspx

-4
ответ дан ivan 23 August 2018 в 21:46
поделиться

Интерполяция строк - это компилятор, а не библиотека.

Отверстия не являются именами, а выражениями:

var r = new Rectangle(5, 4);
var s = $"area: {r.Width + r.Heigh}":

Как вы это сделаете для локализации, так как вы намерены?

Даже r существует только во время компиляции. В IL это просто позиция в стеке переменных метода.

Я сделал то, что вы намереваетесь сделать для ресурсов и файлов конфигурации.

Поскольку вы можете иметь только конечный набор «переменные» для замены, то, что я сделал, был массив (или словарь, если вы предпочитаете), и используйте регулярное выражение для замены имен в отверстиях индексом. То, что я даже допустил для спецификаторов формата.

3
ответ дан Paulo Morgado 23 August 2018 в 21:46
поделиться

Один подход к работе вокруг этого заключается в использовании лямбда, содержащей интерполированную строку. Что-то вроде:

Func<string, string> formatter = url => $"URL: {url}";
...
var googleUrl = "http://google.com";
...
var log = formatter(googleUrl);

В C # 7.0 вы можете использовать локальную функцию вместо лямбда, чтобы сделать код немного более простым и эффективным:

string formatter(string url) => $"URL: {url}";
...
var googleUrl = "http://google.com";
...
var log = formatter(googleUrl);
22
ответ дан svick 23 August 2018 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: