Datový typ řetězec

Datový string typ představuje sekvenci nulového nebo více znaků Unicode .

Informace o operátorech řetězcových dotazů najdete v tématu Řetězcové operátory.

Poznámka

  • Interně jsou řetězce kódované v UTF-8. Neplatné znaky (jiné než UTF8) se v době příjmu nahradí náhradními znaky unicode U+FFFD .
  • Kusto nemá žádný datový typ, který by odpovídal jednomu znaku. Jeden znak je reprezentován jako řetězec o délce 1.
  • Pokud hodnota jednoho řetězce v záznamu překročí 1 MB (měřeno pomocí kódování UTF-8), při příjmu string dat se hodnota zkrátí a příjem dat proběhne úspěšně. Pokud hodnota jednoho řetězce v záznamu nebo celý záznam překročí povolený datový limit 64 MB, příjem dat selže.

string Literály

K kódování řetězcových literálů v textu dotazu můžete použít dvojité nebo jednoduché uvozovky. U dvojitých uvozovek musíte uvozovat uvozovky se zpětným lomítkem (\). U jednoduchých uvozovek musíte uvozovat řídicí znaky vnořených jednoduchých uvozovek a nemusíte uvozovat dvojité uvozovky.

Znak zpětného lomítka použijte k uvozovkách, znakům tabulátoru (\t), znakům nového řádku (\n) a samotnému zpětnému lomítku (\\).

Poznámka

Znak nového řádku (\n) a návratový znak (\r) musí být uzavřeny v uvozovkách, pokud nepoužíváte řetězcové literály s více řádky.

Doslovné řetězcové literály

Podporují se také doslovné řetězcové literály. V tomto tvaru znak zpětného lomítka (\) představuje sám sebe a není řídicím znakem. Předřazení znaku @ do řetězcových literálů slouží jako doslovný identifikátor. V doslovných řetězcových literálech jsou dvojité uvozovky uvozovány dvojitými uvozovkami a jednoduché uvozovky s jednoduchými uvozovkami.

Příklad najdete v tématu Doslovný řetězec.

Poznámka

Znak nového řádku (\n) a návratový znak (\r) musí být uzavřeny v uvozovkách, pokud nepoužíváte řetězcové literály s více řádky.

Řetězcové literály s více řádky

Označit víceřádkové řetězcové literály "trojitým zpětným akordem" (''') na začátku a konci literálu.

Příklad najdete v tématu Víceřádkový řetězcový literál.

Poznámka

  • Víceřádkové řetězcové literály podporují nové znaky (\n) a návratové znaky (\r).
  • Víceřádkové řetězcové literály nepodporují řídicí znaky. Podobá se doslovné řetězcové literály.
  • Víceřádkové řetězcové literály nepodporují obfuskaci.

Zřetězení oddělených řetězcových literálů

Pokud v dotazu Kusto dva nebo více sousedících řetězcových literálů nemají žádné oddělení, automaticky se zkombinují a vytvoří nový řetězcový literál. Podobně platí, že pokud jsou řetězcové literály oddělené pouze prázdnými znaky nebo komentáři, zkombinují se také tak, aby vytvořily nový řetězcový literál.

Příklad najdete v tématu Zřetězené řetězcové literály.

Obfuskované řetězcové literály

Dotazy se ukládají pro telemetrii a analýzu. Pokud chcete chránit citlivé informace, jako jsou hesla a tajné kódy, můžete řetězec označit jako obfuskovaný řetězcový literál. Tyto označené řetězce se v textu dotazu nahradí hvězdičkami (*).

Obfuskovaný řetězcový literál je vytvořen před vložením znaku hH nebo před standardní nebo doslovný řetězcový literál.

Příklad najdete v tématu Obfuskated řetězcový literál.

Důležité

Označte všechny řetězcové literály, které obsahují tajné informace, jako obfuskované řetězcové literály.

Tip

V některých situacích obsahuje tajné informace pouze část řetězcového literálu. V takových případech rozdělte literál na část, která není tajná, a část tajná. Pak označte jako obfuskovanou pouze část tajného kódu.

Příklady

Řetězcový literál s uvozovkami

Následující příklad ukazuje, jak používat uvozovky v řetězcových literálech zahrnujících jednoduché a dvojité uvozovky. Další informace najdete v tématu Řetězcové literály.

print
    s1 = 'string with "double quotes"',
    s2 = "string with 'single quotes'"

Výstup

s1 s2
řetězec s "dvojitými uvozovkami" řetězec s jednoduchými uvozovkami

Řetězcový literál se zpětným lomítkem

Následující příklad vytvoří vzor regulárního výrazu pomocí zpětných lomítek pro řídicí speciální znaky. Další informace najdete v tématu Řetězcové literály.

print pattern = '\\n.*(>|\'|=|\")[a-zA-Z0-9/+]{86}=='

Výstup

Vzor
\n.*(>|'|=|") [a-zA-Z0-9/+]{86}==

Řetězcový literál s Kódováním Unicode

Následující příklad ukazuje, že zpětné lomítko je nutné, aby bylo možné zahrnout znak Unicode v řetězcovém literálu.

print space = "Hello\u00A0World"

Výstup

mezera
Hello World

Doslovný řetězcový literál

Následující příklad vytvoří cestu, ve které jsou zpětná lomítka součástí cesty místo řídicích znaků. Chcete-li to provést, znaménko řetězce @ je předřazení řetězce a vytvoří doslovný řetězcový literál.

print myPath = @'C:\Folder\filename.txt'

Výstup

moje_cesta
C:\Folder\filename.txt

Řetězcový literál s více řádky

Následující příklad ukazuje syntaxi víceřádkového řetězcového literálu, který používá nové řádky a tabulátory pro vytvoření stylu bloku kódu. Další informace najdete v tématu Víceřádkové řetězcové literály.

print program = ```
  public class Program {
    public static void Main() {
      System.Console.WriteLine("Hello!");
    }
  }```

Výstup

program
public class Program { public static void Main() { System.Console.WriteLine("Hello!"); } }

Zřetězené řetězcové literály

Všechny následující výrazy poskytují řetězec o délce 13. Další informace najdete v tématu Zřetězení literálů oddělených řetězců.

print 
    none = strlen("Hello"', '@"world!"),
    whitespace = strlen("Hello" ', ' @"world!"),
    whitespaceAndComment = strlen("Hello" 
        // Comment
        ', '@"world!"
    );

Výstup

žádné Mezery whitespaceAndComment
13 13 13

Obfuskovaný řetězcový literál

Ve výstupu h následujícího dotazu je řetězec viditelný. V trasování nebo telemetrii h se ale řetězec nahradí hvězdičkami. Další informace najdete v tématu Obfuskované řetězcové literály.

print blob="https://contoso.blob.core.windows.net/container/blob.txt?"
    h'sv=2012-02-12&se=2013-04-13T0...'

Výstup

blob
https://contoso.blob.core.windows.net/container/blob.txt?sv=2012-02-12& se=2013-04-13T0...