{"id":4666,"date":"2022-12-11T09:43:09","date_gmt":"2022-12-11T08:43:09","guid":{"rendered":"https:\/\/ekiwi.de\/?p=4666"},"modified":"2022-12-11T09:17:43","modified_gmt":"2022-12-11T08:17:43","slug":"c-das-erste-vorkommen-eines-strings-in-einen-anderen-string-finden-und-ersetzen","status":"publish","type":"post","link":"https:\/\/ekiwi.de\/index.php\/4666\/c-das-erste-vorkommen-eines-strings-in-einen-anderen-string-finden-und-ersetzen\/","title":{"rendered":"C#: Das erste Vorkommen eines Strings in einen anderen String finden und ersetzen"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Inhalt<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ekiwi.de\/index.php\/4666\/c-das-erste-vorkommen-eines-strings-in-einen-anderen-string-finden-und-ersetzen\/#Replace_funktioniert_nicht\" >Replace() funktioniert nicht<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ekiwi.de\/index.php\/4666\/c-das-erste-vorkommen-eines-strings-in-einen-anderen-string-finden-und-ersetzen\/#Loesung\" >L\u00f6sung<\/a><\/li><\/ul><\/nav><\/div>\n<p>Wenn man viel mit C# zum Beispiel in Visual Studio programmiert, kommt es auch immer wieder vor, dass man Zeichenketten (Strings) verarbeiten m\u00f6chte. Eine Problemstellung kann dabei sein, dass man innerhalb eines Strings ein Wort, bestimmte Zeichen oder ganze S\u00e4tze, also einen Substring finden m\u00f6chte um diesen bespielsweise durch etwas anderes zu ersetzen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Replace_funktioniert_nicht\"><\/span>Replace() funktioniert nicht<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Bekanntlich gibt es bei Programmiersprachen immer viele oder mehrere M\u00f6glichkeiten, um zum Zeil zu kommen. Eine naheliegende Variante w\u00e4re einfach die Replace-Funktion zu verwenden \u00e1 la:<\/p>\n<pre><code><span style=\"color: #000080;\">myText <\/span>= <span style=\"color: #000080;\">myText<\/span>.<span style=\"color: #808000;\">Replace<\/span>(\"<span style=\"color: #993300;\">searchString<\/span>\", \"<span style=\"color: #993300;\">replaceString<\/span>\");<\/code><\/pre>\n<p>Dabei ist <em>searchString<\/em> der gesuchte Substring und <em>replaceString<\/em> die Zeichenkette mit welcher wir <em>searchString<\/em> ersetzen wollen. Durchsucht wird in diesem Fall die Zeichenkette <em>myText<\/em>.<\/p>\n<p>Das Problem dabei ist, dass die <em>Replace<\/em>-Funktion <a title=\"C# Wie oft ist ein Substring in einer Zeichenkette enthalten?\" href=\"https:\/\/ekiwi.de\/index.php\/4656\/c-anzahl-vorkommen-eines-strings-in-einem-anderen-string\/\"><strong>alle Vorkommen<\/strong><\/a> von <em>searchString<\/em> ersetzt. In unserer Fragestellungen wollen wir aber nur das erste Vorkommen eines bestimmten gesuchten Strings ersetzten. Dass hei\u00dft also, dass man <em>Replace<\/em> nur benutzen kann, wenn man alle Vokommen ersetzen m\u00f6chte.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loesung\"><\/span>L\u00f6sung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Man muss also zuerst die Position ermitteln an welcher die Zeichenfolge zuerst vorkommt. Das geht \u00fcber die Funktion <em>IndexOf()<\/em>. Danach entfernt man den gesuchten String aus der Zeichenfolge (<em>Remove()-Funktion<\/em>), um dann den neuen String einzuf\u00fcgen (<em>Insert()-Funktion<\/em>). Im C#-Code sieht das Ganze dann wie folgt aus, wobei <em>int i<\/em> der null-basierte Integerwert ist, an welcher Stelle <em>searchString<\/em> das erste mal gefunden wurde.<\/p>\n<pre><code><span style=\"color: #0000ff;\">int<\/span> i = <span style=\"color: #000080;\">myText<\/span>.<span style=\"color: #808000;\">IndexOf<\/span>(\"<span style=\"color: #993300;\">searchString<\/span>\");\r\n<span style=\"color: #000080;\">myText<\/span> = <span style=\"color: #000080;\">myText<\/span>.<span style=\"color: #808000;\">Remove<\/span>(i, \"<span style=\"color: #993300;\">searchString<\/span>\".Length);\r\n<span style=\"color: #000080;\">myText<\/span> = <span style=\"color: #000080;\">myText<\/span>.<span style=\"color: #808000;\">Insert<\/span>(i, \"<span style=\"color: #993300;\">replaceString<\/span>\");<\/code><\/pre>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Wenn man viel mit C# zum Beispiel in Visual Studio programmiert, kommt es auch immer wieder vor, dass man Zeichenketten<\/p>\n","protected":false},"author":2,"featured_media":1011,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[13],"tags":[190,136,80,559,191],"class_list":["post-4666","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programmierung","tag-c","tag-programmieren","tag-programmierung","tag-programming","tag-visual-studio"],"_links":{"self":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/posts\/4666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/comments?post=4666"}],"version-history":[{"count":0,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/posts\/4666\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/media\/1011"}],"wp:attachment":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/media?parent=4666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/categories?post=4666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/tags?post=4666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}