vim поиск и добавление / изменение

Кастинг не предполагает никакого преобразования, т. е. внутреннее представление значения не изменяется. Пример:

object o = "Hello"; // o is typed as object and contains a string.
string s = (string)o; // This works only if o really contains a string or null.

Вы можете преобразовать double в string, как это

double d = 5;
string s = d.ToString(); // -> "5"

// Or by specifying a format
string formatted = d.ToString("N2"); // -> "5.00"

Вы можете преобразовать string в double несколькими способами (здесь только два из них):

string s = "5";
double d = Double.Parse(s); // Throws an exception if s does not contain a valid number

Или безопасный способ

string s = "5";
double d;
if (Double.TryParse(s, out d)) {
    Console.WriteLine("OK. Result = {0}", d);
} else {
    Console.WriteLine("oops!");
}
0
задан GGJON 13 March 2019 в 18:28
поделиться

2 ответа

Вы можете использовать командную строку для этого. В Linux используйте sed.

sed -i 's/\.png/\.png alt=* title=*/g'

Здесь выполняется поиск по .png и замена на .png alt=* title=*. Вы должны использовать обратную косую черту перед. потому что это особый характер.

0
ответ дан Pedro Bonifácio 13 March 2019 в 18:28
поделиться

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

<img src="foo_one.png" />
<img src="bar_two.png" />

Вы можете выполнить эту команду:

:%s/"\(.\{-}\)\.png"/"\1.png" title="\1" alt="\1"/g

.\{-} будет соответствовать «любому количеству символов перед .png «без жадности» ( :help /\{ ) и скобки вокруг него \( и \) помечают его как захваченную группу, которая затем будет использоваться в замене как \1 ( первая захваченная группа). Выполнение этого дает вам:

<img src="foo_one.png" title="foo_one" alt="foo_one" />
<img src="bar_two.png" title="bar_two" alt="bar_two" />

Теперь, если вам нужна более сложная подстановка, например, превращение имени файла в удобочитаемую строку, вы можете использовать флаг подстановки \=, чтобы заменить строку любой выражение, как вызов функции. Например, вот что мы могли бы запустить в приведенном выше тексте:

:%s/title="\zs\(.\{-}\)\ze"/\=lib#CamelCase(submatch(1))/g

При этом используются два специфических для Vim паттерна: \zs и \ze. Это «начало матча» и «конец матча». Вещи, которые будут искать, это весь паттерн, title=.... Однако, что будет заменено только между \zs и \ze. Это облегчает использование результата lib#CamelCase в качестве прямой замены.

Обратите внимание, что в этот раз вам не нужны скобки \( / \), потому что вы можете просто использовать submatch(0) для «полного соответствия»:

%s/title="\zs.\{-}\ze"/\=lib#CamelCase(submatch(0))/g

Функция [ 1122] - это моя собственная функция, которая реализована следующим образом:

function! lib#CamelCase(word)
  return substitute(a:word, '_\(.\)', '\U\1', 'g')
endfunction

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


Я не уверен, какой у вас уровень опыта работы с Vim и регулярными выражениями, поэтому сложно дать конкретный совет, а замены Vim - большая тема. Я могу порекомендовать вам прочитать эти разделы справки:

0
ответ дан Andrew Radev 13 March 2019 в 18:28
поделиться
Другие вопросы по тегам:

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