{"id":1148,"date":"2020-07-17T22:13:00","date_gmt":"2020-07-17T20:13:00","guid":{"rendered":"http:\/\/www.daniel.slask.pl\/?p=1148"},"modified":"2021-02-08T22:04:31","modified_gmt":"2021-02-08T21:04:31","slug":"edycja-duzych-stringow-w-c","status":"publish","type":"post","link":"https:\/\/daniel.slask.pl\/m\/edycja-duzych-stringow-w-c\/","title":{"rendered":"Edycja du\u017cych string\u00f3w w C#"},"content":{"rendered":"\n<p>Jeden <a href=\"http:\/\/www.daniel.slask.pl\/?p=1150\">poprzedni wpis<\/a> dotyczy\u0142 obs\u0142ugi, edycji danych tekstowych &#8211; string\u00f3w. Lecz pewnie zauwa\u017cy\u0142e\u015b, \u017ce przy du\u017cych ilo\u015bciach danych program kt\u00f3ry zosta\u0142 utworzony zaczyna powoli dzia\u0142a\u0107 i zu\u017cywa du\u017c\u0105 ilo\u015b\u0107 pami\u0119ci. Jest to prawdopodobnie zwi\u0105zane z obs\u0142ug\u0105 du\u017cej ilo\u015bci danych &#8211; mo\u017cna powiedzie\u0107 \u017ce z nieodpowiedni\u0105 obs\u0142ug\u0105. Stosowanie poni\u017cszych komend spowoduje optymalizacj\u0119, w pewnym zakresie naszego kodu.<\/p>\n\n\n\n<p>Funkcje opisane w poprzednim wpisie zu\u017cywaj\u0105 du\u017co pami\u0119ci i powoduj\u0105 znaczne op\u00f3\u017anienia w dzia\u0142aniu naszej aplikacji. Aby t\u0105 obs\u0142ug\u0119 zoptymalizowa\u0107 mo\u017cna, a nawet powinno si\u0119 wykorzysta\u0107 metody z obiektu StringBuilder znajduj\u0105cy si\u0119 w przestrzeni nazw String.Text<\/p>\n\n\n\n<ul><li>Chars[Int32]<\/li><\/ul>\n\n\n\n<p>Odczytuje lub ustawia znak w podanej lokalizacji<\/p>\n\n\n\n<ul><li>Length<\/li><\/ul>\n\n\n\n<p>Odczytuje d\u0142ugo\u015b\u0107 \u0142a\u0144cucha znak\u00f3w.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">int32 dlugosc = obiekt_stringBuilder.Length;<\/code><\/pre>\n\n\n\n<ul><li>Append<\/li><\/ul>\n\n\n\n<p>Do\u0142\u0105cza dany ci\u0105g znak\u00f3w do istniej\u0105cego ju\u017c ci\u0105gu znak\u00f3w. Czyli po ludzku dodaje tekst do istniej\u0105cego ju\u017c tekstu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.Append(\"dodaje\").Append(\" nowy \").Append(\"ci\u0105g znak\u00f3w\");<\/code><\/pre>\n\n\n\n<ul><li>AppendJoin<\/li><\/ul>\n\n\n\n<p>Do\u0142\u0105cza dany ci\u0105g znak\u00f3w przy u\u017cyciu podanego \u0142\u0105cznika.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.AppendJoin('-', \"Nowe znaki\");<\/code><\/pre>\n\n\n\n<ul><li>AppendLine<\/li><\/ul>\n\n\n\n<p>Do\u0142\u0105cza podany tekst, z zastosowaniem nowej linii.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.AppendLine(\"Nowe znaki w nowej lini\");<\/code><\/pre>\n\n\n\n<ul><li>Clear<\/li><\/ul>\n\n\n\n<p>Usuwa ca\u0142y \u0142a\u0144cuch znak\u00f3w.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.Clear();<\/code><\/pre>\n\n\n\n<ul><li>CopyTo<\/li><\/ul>\n\n\n\n<p>Kopiuje znaki do wskazanego miejsca z wskazanego \u0142a\u0144cucha<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt1_stringBuilder.CopyTo(0, obiekt2_stringBuilder, 5);<\/code><\/pre>\n\n\n\n<ul><li>Equals<\/li><\/ul>\n\n\n\n<p>Por\u00f3wnuje dwa ci\u0105gi znak\u00f3w &#8211; je\u017celi s\u0105 takie same, zwraca true, w przeciwnym razie zwraca false.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">bool spr = obiekt1_stringBuilder.Equals(obiekt2_stringBuilder);<\/code><\/pre>\n\n\n\n<ul><li>Insert<\/li><\/ul>\n\n\n\n<p>Wstawia w okre\u015blone miejsce dany ci\u0105g znak\u00f3w.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.Insert(3, \"to\" , 5);<\/code><\/pre>\n\n\n\n<ul><li>Remove<\/li><\/ul>\n\n\n\n<p>Usuwa okre\u015blon\u0105 ilo\u015b\u0107 znak\u00f3w z danego \u0142a\u0144cucha.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.Remowe(20, 5);<\/code><\/pre>\n\n\n\n<ul><li>Replace<\/li><\/ul>\n\n\n\n<p>Zast\u0119puje okre\u015blone znaki nowymi znakami.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.Replace(\"zamien to\", \"na to\");<\/code><\/pre>\n\n\n\n<ul><li>ToString<\/li><\/ul>\n\n\n\n<p>Konwertuje StringBuilder na String<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">obiekt_stringBuilder.ToString();<\/code><\/pre>\n\n\n\n<p>Aby mo\u017cliwe by\u0142o wykorzystanie String Buildera nale\u017cy wykorzysta\u0107 konstruktor, tak samo jak ma to miejsce przy tworzeniu warto\u015b\u0107 typu String:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">StringBuilder obiekt_stringBuilder = &nbsp;&nbsp;&nbsp;&nbsp;new StringBuilder();<\/code><\/pre>\n\n\n\n<p>Pozosta\u0142e metody wraz z dok\u0142adniejszym opisem klasy <em>String.text stringbuilder<\/em> mo\u017cna znale\u017a\u0107 w dokumentacji znajduj\u0105cej si\u0119 na stronie <a href=\"https:\/\/docs.microsoft.com\/pl-pl\/dotnet\/api\/system.text.stringbuilder?view=netframework-4.8\">microsoftu<\/a><\/p>\n\n\n\n<p>Przepraszam za b\u0142\u0119dne nazywanie metod funkcjami, oraz stosowanie nieodpowiedniego nazewnictwa. Pozosta\u0142a nalecia\u0142o\u015b\u0107 z C, oraz C++. W razie b\u0142\u0119d\u00f3w prosz\u0119 o poprawianie mnie. Dzi\u0119ki za wyrozumia\u0142o\u015b\u0107.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jeden poprzedni wpis dotyczy\u0142 obs\u0142ugi, edycji danych tekstowych &#8211; string\u00f3w. Lecz pewnie zauwa\u017cy\u0142e\u015b, \u017ce przy du\u017cych ilo\u015bciach danych program kt\u00f3ry zosta\u0142 utworzony zaczyna powoli dzia\u0142a\u0107 i zu\u017cywa du\u017c\u0105 ilo\u015b\u0107 pami\u0119ci. Jest to prawdopodobnie zwi\u0105zane z obs\u0142ug\u0105 du\u017cej ilo\u015bci danych &#8211;&#8230;<br \/><a class=\"read-more-button\" href=\"https:\/\/daniel.slask.pl\/m\/edycja-duzych-stringow-w-c\/\">Wi\u0119cej<\/a><\/p>\n","protected":false},"author":1,"featured_media":1349,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,8,59],"tags":[192,195,196,191,193],"views":339,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Csh.png","jetpack_shortlink":"https:\/\/wp.me\/pcPgV3-iw","_links":{"self":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1148"}],"collection":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/comments?post=1148"}],"version-history":[{"count":6,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1148\/revisions"}],"predecessor-version":[{"id":1598,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1148\/revisions\/1598"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media\/1349"}],"wp:attachment":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media?parent=1148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/categories?post=1148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/tags?post=1148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}