{"id":55000011,"date":"2015-04-01T00:00:00","date_gmt":"2020-03-27T19:15:59","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=11"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Mit_Zeichenketten_arbeiten","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/","title":{"rendered":"Mit Zeichenketten arbeiten"},"content":{"rendered":"<p><b>Schon VBA bietet eine Menge Funktionen f&uuml;r den Umgang mit Zeichenketten. Unter C# &#8211; wer h&auml;tte das gedacht &#8211; setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth&auml;lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf&uuml;hrung in den Umgang mit Zeichenketten unter C#.<\/b><\/p>\n<p>Unter VBA ist eine Zeichenkette, also der Inhalt einer Variablen mit dem Datentyp <b>String<\/b>, ein Werttyp &#8211; genau wie die Zahlendatentypen oder Datum\/Zeit. Unter C# (und den anderen .NET-Programmiersprachen) ist dies anders: Dort ist ein <b>String <\/b>ein Referenztyp, das hei&szlig;t, dass die Objektvariable des Datentyps <b>String <\/b>lediglich die Speicheradresse enth&auml;lt, hinter der sich der eigentliche Inhalt verbirgt. Au&szlig;erdem bringt der <b>String <\/b>unter .NET die Eigenschaften eines Objekts mit, n&auml;mlich Methoden und Eigenschaften. Prinzipiell entspricht ein <b>String<\/b>-Objekt sogar einem Array, das Elemente des Datentyps <b>Char <\/b>enth&auml;lt &#8211; der wiederum ein Werttyp ist.<\/p>\n<h2>Beispiele nachbauen<\/h2>\n<p>Wenn Sie die Beispiele dieses Artikels nachvollziehen m&ouml;chten, legen Sie ein Projekt des Typs <b>Konsolenanwendung <\/b>mit der Programmiersprache <b>Visual C# <\/b>an. Die nachfolgenden Beispiele k&ouml;nnen Sie dann als Inhalt der Prozedur <b>Main <\/b>eintragen und mit <b>F5 <\/b>ausf&uuml;hren.<\/p>\n<h2>Variable deklarieren und f&uuml;llen<\/h2>\n<p>F&uuml;r ein einfaches Beispiel, das einfach nur eine Variable des Typs <b>String <\/b>mit dem Namen <b>zeichenfolge <\/b>erstellt, mit einer Zeichenkette f&uuml;llt und auf der Konsole ausgibt, sieht dies wie folgt aus:<\/p>\n<pre>namespace Zeichenketten {\r\n     class Program     {\r\n         static void Main(string[] args) {\r\n             String zeichenfolge = \"Beispieltext\";\r\n             Console.WriteLine(zeichenfolge);\r\n             Console.ReadLine();\r\n         }\r\n     }\r\n}<\/pre>\n<p>Die Anweisung zum Deklarieren und F&uuml;llen der Variablen k&ouml;nnen Sie, wie &uuml;blich, auch auf zwei Anweisungen aufteilen:<\/p>\n<pre>String zeichenfolge;\r\nzeichenfolge = \"Beispieltext\";<\/pre>\n<h2>Ein String ist ein Array<\/h2>\n<p>Eingangs haben wir die Behauptung aufgestellt, dass ein <b>String<\/b>-Objekt Eigenschaften eines Array aufweisen w&uuml;rde. Dabei handelt es sich beispielsweise um die M&ouml;glichkeit, per Index auf die einzelnen Elemente des Typs <b>Char <\/b>zuzugreifen oder diese sogar per <b>foreach<\/b>-Schleife zu durchlaufen. Um diese Erkenntnis zu gewinnen, gibt es zwei M&ouml;glichkeiten: Die erste ist es, sich einfach per IntelliSense die Eigenschaften und Methoden des <b>String<\/b>-Objekts anzeigen zu lassen. Oder Sie &ouml;ffnen mit <b>Strg + Alt + J <\/b>den Objektkatalog und suchen dort nach der Zeichenkette <b>String<\/b>, was unter <b>System.String<\/b> schnell den richtigen Treffer liefert (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_11_001.png\" alt=\"Ausgabe zweier Write-Anweisungen\" width=\"600\" height=\"295,1613\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Ausgabe zweier Write-Anweisungen<\/span><\/b><\/p>\n<h2>Buchstaben per foreach-Schleife durchlaufen<\/h2>\n<p>Wenn Sie sich die Basistypen des <b>String<\/b>-Objekts ansehen, sto&szlig;en Sie schnell auf die <b>IEnumerable<\/b>-Schnittstelle. Ist diese vorhanden, k&ouml;nnen Sie die Elemente eines Objekts per <b>foreach<\/b>-Schleife durchlaufen.<\/p>\n<p>Dies erledigen wir im folgenden Beispiel, wo wir eine <b>for-each<\/b>-Schleife &uuml;ber alle <b>Char<\/b>-Elemente des <b>String<\/b>-Objekts <b>zeichenfolge <\/b>durchlaufen und das jeweilige <b>Char<\/b>-Element mit der Variablen <b>buchstabe <\/b>referenzieren. Innerhalb der Schleife geben wir den Inhalt der <b>Char<\/b>-Variablen <b>buchstabe <\/b>zweimal aus &#8211; einmal unbehandelt und einmal zu einem Integer-Wert konvertiert:<\/p>\n<pre>String zeichenfolge = \"Beispieltext\";\r\nforeach(Char buchstabe in zeichenfolge) {\r\n     Console.WriteLine(\"{0} {1}\", buchstabe, \r\n         (int)buchstabe);\r\n}\r\nConsole.ReadLine();<\/pre>\n<p>Das Ergebnis sieht wie in Bild 2 aus &#8211; neben dem Buchstaben erscheint der ASCII-Wert entsprechend der UTF-16-Kodierung f&uuml;r das jeweilige Zeichen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_11_002.png\" alt=\"Ausgabe der Char-Elemente eines String-Objekts als Text und Integer\" width=\"425\" height=\"249,6503\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Ausgabe der Char-Elemente eines String-Objekts als Text und Integer<\/span><\/b><\/p>\n<p>Statt <b>int <\/b>h&auml;tten wir hier auch den Datentyp <b>byte <\/b>verwenden k&ouml;nnen:<\/p>\n<pre>(byte)buchstabe<\/pre>\n<h2>Zeichenkette mit for durchlaufen<\/h2>\n<p>Das folgende Beispiel zeigt, wie Sie die Anzahl der enthaltenen Zeichen in einer <b>String<\/b>-Variablen ermitteln. Mit diesem Wert k&ouml;nnen wir dann eine <b>for<\/b>-Schleife definieren, die mit jedem Durchlauf das aktuelle <b>Char<\/b>-Element &uuml;ber den Index der <b>String<\/b>-Variablen <b>zeichenfolge <\/b>ermittelt und der Variablen <b>buchstabe <\/b>zuweist.<\/p>\n<p>Auch hier landen der Buchstabe und der ASCII-Code in der Ausgabe:<\/p>\n<pre>String zeichenfolge = \"Beispieltext\";\r\nint anzahl = zeichenfolge.Length;\r\nfor (int i = 0; i &lt; anzahl; i++) {\r\n     Char buchstabe = zeichenfolge[i];\r\n     Console.WriteLine(\"{0} {1}\", buchstabe, \r\n         (int)buchstabe);                \r\n}\r\nConsole.ReadLine();<\/pre>\n<p>Dies ist schon einmal erheblich einfacher als unter VBA &#8211; dort h&auml;tten Sie erstens nur eine <b>For&#8230;Next<\/b>-Schleife verwenden k&ouml;nnen, um auf die einzelnen Zeichen zuzugreifen, und zweitens h&auml;tten wir f&uuml;r jeden einzelnen Zugriff die <b>Mid<\/b>-Funktion auf die Zeichenkette anwenden m&uuml;ssen:<\/p>\n<pre>For i = 0 To <span style=\"color:blue;\">Len<\/span>(strZeichenkette)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> <span style=\"color:blue;\">Mid<\/span>(strZeichenkette, i, 1)\r\n<span style=\"color:blue;\">Next<\/span> i<\/pre>\n<p>Zur Ermittlung des ASCII-Codes h&auml;tten wir dort noch die Funktion <b>Asc <\/b>verwenden m&uuml;ssen, statt einfach nur den Buchstaben in den Zahlentyp <b>int <\/b>oder <b>byte <\/b>zu konvertieren.<\/p>\n<p>&Uuml;brigens k&ouml;nnen Sie auch einfach &uuml;ber den Index auf ein Zeichen eines String-Objekts zugreifen &#8211; beispielsweise wie folgt auf das erste Zeichen:<\/p>\n<pre>string Vorname = \"Andr&eacute;\";\r\nchar Buchstabe = Vorname[0];<\/pre>\n<h2>Unterschied zwischen String und Char<\/h2>\n<p>Es gibt eine Reihe Unterschiede zwischen <b>string<\/b>&#8211; und <b>char<\/b>-Objekten. Einen haben Sie schon kennen gelernt: Ein Char ist ein Element eines Arrays, das in einer <b>string<\/b>-Variablen gespeichert wird. Ein anderer ist, dass nicht beide etwa beim Zuweisen in Anf&uuml;hrungszeichen eingefasst werden.<\/p>\n<p>Beim <b>string <\/b>verwenden Sie das &uuml;bliche Anf&uuml;hrungszeichen:<\/p>\n<pre>string zeichenfolge;\r\nzeichenfolge = \"Beispieltext\";<\/pre>\n<p>Bei einer <b>Char<\/b>-Variable, die ja nur ein Zeichen aufnehmen kann, verwenden Sie hingegen einfache Anf&uuml;hrungszeichen:<\/p>\n<pre>Char zeichen;\r\nzeichen = ''A'';<\/pre>\n<p>Dies nur, damit Sie sich nicht &uuml;ber Fehlermeldungen wundern, wenn Sie einmal einer <b>Char<\/b>-Variablen ein Zeichen in Anf&uuml;hrungszeichen &uuml;bergeben m&ouml;chten (<b>Eine implizite Konvertierung von Typ &#8221;string&#8221; in &#8221;char&#8221; ist nicht m&ouml;glich.<\/b>).<\/p>\n<h2>Zeichenfolge aus Char-Elementen zusammensetzen<\/h2>\n<p>Eine Zeichenfolge m&uuml;ssen Sie nicht immer direkt zuweisen; Sie k&ouml;nnen diese auch aus einem Array von <b>char<\/b>-Objekten zusammenstellen. Dazu brauchen Sie einfach nur das <b>char<\/b>-Array als Parameter beim Erstellen einer neuen <b>String<\/b>-Instanz anzugeben:<\/p>\n<pre>char[] chars = { ''A'', ''n'', ''d'', ''r'', ''&eacute;'' };\r\nString strChars = new String(chars);\r\nConsole.WriteLine(\"String aus Char-Array: {0}\", strChars);\r\n\/\/Ausgabe:\r\n\/\/String aus Char-Array: Andr&eacute;<\/pre>\n<h2>Position einer Teilzeichenkette ermitteln<\/h2>\n<p>Unter VBA war hierzu die Funktion <b>InStr <\/b>angezeigt, wenn Sie das erste Auftreten einer Teilzeichenfolge ermitteln wollten, und <b>InStrRev<\/b>, wenn das erste Auftreten der Teilzeichenfolge von hinten gefragt war.<\/p>\n<p>Das erste Auftreten einer Zeichenfolge in einer <b>String<\/b>-Variablen ermitteln Sie mit der Methode <b>IndexOf<\/b>, die als Parameter die zu suchende Teilzeichenkette erwartet:<\/p>\n<pre>String zeichenfolge;\r\nzeichenfolge = \"Beispieltext\";\r\nint position = zeichenfolge.IndexOf(\"spiel\");\r\nConsole.WriteLine(\"Position von ''spiel'': {0}\", position);\r\n\/\/Ausgabe:\r\n\/\/3<\/pre>\n<p>Die Zeichenfolge <b>spiel <\/b>beginnt im Beispieltext mit dem vierten Zeichen, was dem Indexwert <b>3 <\/b>(nullbasiert) entspricht.<\/p>\n<p>Die VBA-Funktion <b>InStrRev <\/b>bilden Sie unter C# mit der Methode <b>LastIndexOf <\/b>ab. Diese sucht das erste Auftreten einer Zeichenfolge von hinten:<\/p>\n<pre>zeichenfolge = \"blablabla\";\r\nposition = zeichenfolge.LastIndexOf(\"bla\");\r\nConsole.WriteLine(\"Position: {0}\", position);<\/pre>\n<h2>Zeichenfolge nicht gefunden<\/h2>\n<p>Findet <b>IndexOf <\/b>keine passende Teilzeichenkette, liefert es den Wert <b>-1 <\/b>zur&uuml;ck:<\/p>\n<pre>zeichenfolge = \"blablabla\";\r\nposition = zeichenfolge.IndexOf(\"bla\");\r\nwhile (position != -1) {\r\n     Console.WriteLine(\"Position: {0}\", position);\r\n     position = zeichenfolge.IndexOf(\"bla\", position + 1);\r\n}\r\n\/\/Ausgabe:\r\n\/\/Position: -1<\/pre>\n<h2>Alle Auftreten einer Zeichenfolge finden<\/h2>\n<p>Unter VBA haben Sie hier eine <b>Do While<\/b>-Schleife genutzt, die so lange lief, bis der Wert f&uuml;r die gefundene Position den Wert <b>0 <\/b>angenommen hat.<\/p>\n<p>Hierzu ist anzumerken, dass <b>InStr <\/b>1-basiert ist:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>intPosition<span style=\"color:blue;\"> As Integer<\/span>\r\nintPosition = <span style=\"color:blue;\">InStr<\/span>(1, \"blablabla\", \"bla\")\r\n<span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> intPosition = 0\r\n     <span style=\"color:blue;\">Debug.Print<\/span> intPosition\r\n     intPosition = <span style=\"color:blue;\">InStr<\/span>(intPosition + 1, \"blablabla\", \"bla\")\r\n<span style=\"color:blue;\">Loop<\/span><\/pre>\n<p>Unter C# hilft eine <b>while<\/b>-Schleife weiter sowie eine &Uuml;berladung der Methode <b>IndexOf <\/b>&#8211; n&auml;mlich diejenige, die als zweiten Parameter die Startposition f&uuml;r die Suche erwartet:<\/p>\n<pre>zeichenfolge = \"blablabla\";\r\nposition = zeichenfolge.IndexOf(\"bla\");\r\nwhile (position != -1) {\r\n     Console.WriteLine(\"Position: {0}\", position);\r\n     position = zeichenfolge.IndexOf(\"bla\", position + 1);\r\n}\r\n\/\/Ausgabe:\r\n\/\/0\r\n\/\/3\r\n\/\/6<\/pre>\n<p>Hier ist zu beachten, dass <b>IndexOf <\/b>&#8211; wie oben beschrieben &#8211; den Wert <b>-1 <\/b>zur&uuml;ckliefert, wenn kein weiteres Auftreten mehr gefunden wird. Die Schleife verwendet dementsprechend den Ausdruck <b>position != -1 <\/b>als Kriterium f&uuml;r die Fortsetzung.<\/p>\n<h2>Zeichenfolgen vergleichen<\/h2>\n<p>Zum Vergleichen zweier Zeichenfolgen liefert C# gleich mehrere M&ouml;glichkeiten, die wir uns nun ansehen.<\/p>\n<p>Die erste Variante ist die Methode <b>Equals <\/b>des <b>string<\/b>-Objekts. Diese verwenden Sie als Methode des ersten zu vergleichenden <b>string<\/b>-Objekts und geben das zweite <b>string<\/b>-Objekt als Parameter an:<\/p>\n<pre>string str1 = \"Andr&eacute;\";\r\nstring str2 = \"Andr&eacute;\";\r\nConsole.WriteLine(\"{0} Equals {1}: {2}\", str1.ToString(), \r\n     str2.ToString(), str1.Equals(str2));\r\n\/\/Ausgabe: \r\n\/\/Andr&eacute; Equals Andr&eacute;: <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Diese Methode vergleicht tats&auml;chlich die in den beiden Variablen gespeicherten Objekte. Aber wie k&ouml;nnen diese gleich sein &#8211; wir haben doch unabh&auml;ngig voneinander zwei <b>string<\/b>-Objekte angelegt und gef&uuml;llt Der Grund ist: Die Strings werden intern gespeichert, aber nur jeweils einmal. Haben Sie also bereits eine <b>string<\/b>-Variable mit dem Wert <b>Andr&eacute; <\/b>gef&uuml;llt und legen eine weitere Variable mit diesem Wert an, dann verweisen beide <b>string<\/b>-Variablen auf das gleiche <b>string<\/b>-Objekt.<\/p>\n<p>Anders funktioniert die Vergleichsmethode <b>Compare<\/b>. Diese ist eine Methode der <b>String<\/b>-Klasse und erwartet die beiden zu vergleichenden <b>string<\/b>-Variablen als Parameter. Sie wird beispielsweise so aufgerufen:<\/p>\n<pre>Console.WriteLine(String.Compare(str1, str2);<\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000\"><a style=\"color: #ff0000\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000011\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000011?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000011\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"08c30340c1\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Schon VBA bietet eine Menge Funktionen f&uuml;r den Umgang mit Zeichenketten. Unter C# &#8211; wer h&auml;tte das gedacht &#8211; setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth&auml;lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf&uuml;hrung in den Umgang mit Zeichenketten unter C#.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022015,662015,44000001,44000034,44000026,44000033],"tags":[],"yst_prominent_words":[66062023,66062049,66062057,66062062],"class_list":["post-55000011","post","type-post","status-publish","format-standard","hentry","category-66022015","category-662015","category-CGrundlagen","category-COMAddIns_programmieren","category-Outlook_programmieren","category-Visual_Basic_Programmierung"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Mit Zeichenketten arbeiten - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-27T19:15:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Mit Zeichenketten arbeiten - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#blogposting\",\"name\":\"Mit Zeichenketten arbeiten - Visual Basic Entwickler\",\"headline\":\"Mit Zeichenketten arbeiten\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"..\\\/fileadmin\\\/_temp_\\\/2015_02\\\/pic_11_001.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#articleImage\"},\"datePublished\":\"2015-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#webpage\"},\"articleSection\":\"2\\\/2015, 2015, C#-Grundlagen, COM-Add-Ins programmieren, Outlook programmieren, Visual Basic Programmierung, 6\\\/2023, bereich berichtsdaten, bericht, m\\u00f6glichkeiten\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/#listItem\",\"name\":\"2015\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/#listItem\",\"position\":2,\"name\":\"2015\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/#listItem\",\"name\":\"2\\\/2015\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/#listItem\",\"position\":3,\"name\":\"2\\\/2015\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#listItem\",\"name\":\"Mit Zeichenketten arbeiten\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/#listItem\",\"name\":\"2015\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#listItem\",\"position\":4,\"name\":\"Mit Zeichenketten arbeiten\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/#listItem\",\"name\":\"2\\\/2015\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/\",\"name\":\"Mit Zeichenketten arbeiten - Visual Basic Entwickler\",\"description\":\"Schon VBA bietet eine Menge Funktionen f\\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\\u00fchrung in den Umgang mit Zeichenketten unter C#.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Mit_Zeichenketten_arbeiten\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2015-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Mit Zeichenketten arbeiten - Visual Basic Entwickler","description":"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.","canonical_url":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#blogposting","name":"Mit Zeichenketten arbeiten - Visual Basic Entwickler","headline":"Mit Zeichenketten arbeiten","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"..\/fileadmin\/_temp_\/2015_02\/pic_11_001.png","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#articleImage"},"datePublished":"2015-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#webpage"},"articleSection":"2\/2015, 2015, C#-Grundlagen, COM-Add-Ins programmieren, Outlook programmieren, Visual Basic Programmierung, 6\/2023, bereich berichtsdaten, bericht, m\u00f6glichkeiten"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/#listItem","name":"2015"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/#listItem","position":2,"name":"2015","item":"https:\/\/vbentwickler.de\/category\/2015\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/#listItem","name":"2\/2015"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/#listItem","position":3,"name":"2\/2015","item":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#listItem","name":"Mit Zeichenketten arbeiten"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/#listItem","name":"2015"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#listItem","position":4,"name":"Mit Zeichenketten arbeiten","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/#listItem","name":"2\/2015"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#webpage","url":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/","name":"Mit Zeichenketten arbeiten - Visual Basic Entwickler","description":"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2015-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Mit Zeichenketten arbeiten - Visual Basic Entwickler","og:description":"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.","og:url":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2020-03-27T19:15:59+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"Mit Zeichenketten arbeiten - Visual Basic Entwickler","twitter:description":"Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# - wer h\u00e4tte das gedacht - setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000011","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2024-01-30 15:26:23","updated":"2026-05-16 08:12:19","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2015\/\" title=\"2015\">2015<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/\" title=\"2\/2015\">2\/2015<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMit Zeichenketten arbeiten\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2015","link":"https:\/\/vbentwickler.de\/category\/2015\/"},{"label":"2\/2015","link":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/"},{"label":"Mit Zeichenketten arbeiten","link":"https:\/\/vbentwickler.de\/Mit_Zeichenketten_arbeiten\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000011"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000011\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000011"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}