как я могу сделать “Окружить” Шаблон Delphi типа?

Желаемый результат: это образец

Заданная строка: "This is a \"sample\""

Проблема: у вас есть экранирующие символы, защищающие двойные кавычки от интерпретации. escape-символ \ - это инструкция буквально использовать кавычку вместо того, чтобы указывать разрыв строки. Это означает, что фактическое строковое значение равно "This is a "sample"", когда используется в качестве вывода.

Ответ, удаляющий \, может работать, но он делает для вонючего кода, потому что удаление escape-символа таким способом может сделать неясным, что вы намереваетесь, и мешает вам избежать любого символа ,

Удаление " может сработать, хотя оно не позволяет использовать какие-либо кавычки, и некоторые IDE могут оставить escape-символ, чтобы испортить вам день.

Мы хотим одну конкретную цель, кавычки вокруг «образца».

            string sample = "This is a \"sample\"";
            List<string> sampleArray = sample.Split(' ').ToList(); // samplearray is now split into ["This", "is", "a", "\"sample\""]
            var x = sampleArray.FirstOrDefault(t => t == "\"sample\"");  //isolate our needed value
            if (x != null) //prevent a null reference in case something went wrong and samplearray wasnt as expected
            { 
                var index = sampleArray.IndexOf(x); //get the location of the value we just picked
                x = x.Replace("\"", string.Empty); //replace chars
                sampleArray[index] = x; //assign new value to the list

            }
            return String.Join(" ", sampleArray); //return the string joined together with spaces. 
5
задан onnodb 4 March 2009 в 13:17
поделиться

1 ответ

Это должно сделать это:

<?xml version="1.0" encoding="utf-8" ?>
<codetemplate   xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
                version="1.0.0">
    <template name="das" surround="true" invoke="auto">
        <description>
            MP: TDeviceAnsiString
        </description>
        <author>
            Mike rev François
        </author>
        <code language="Delphi" delimiter="|"><![CDATA[TDeviceAnsiString(|end||selected|)]]>
        </code>
    </template>
</codetemplate>

Добавленный: можно найти больше информации о Delphi Wiki с LiveTemplates Технический Infos

11
ответ дан 13 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

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