{"id":7193,"date":"2024-02-12T09:59:35","date_gmt":"2024-02-12T09:59:35","guid":{"rendered":"https:\/\/metaschool.so\/articles\/?p=7193"},"modified":"2024-02-14T07:47:27","modified_gmt":"2024-02-14T07:47:27","slug":"how-to-concatenate-the-strings-in-solidity","status":"publish","type":"post","link":"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/","title":{"rendered":"How to Concatenate the Strings in Solidity?"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_56_1 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/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:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#Overview\" title=\"Overview\">Overview<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#1_Using_the_abiencodePacked_function\" title=\"#1: Using the&nbsp;abi.encodePacked()&nbsp;function\">#1: Using the&nbsp;abi.encodePacked()&nbsp;function<\/a><ul class='ez-toc-list-level-3'><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#Explanation\" title=\"Explanation\">Explanation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#Output\" title=\"Output\">Output<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#2_Using_the_stringconcat_function\" title=\"#2: Using the&nbsp;string.concat()&nbsp;function\">#2: Using the&nbsp;string.concat()&nbsp;function<\/a><ul class='ez-toc-list-level-3'><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#Explanation-2\" title=\"Explanation\">Explanation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#Output-2\" title=\"Output\">Output<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/metaschool.so\/articles\/how-to-concatenate-the-strings-in-solidity\/#Conclusion\" title=\"Conclusion\">Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"overview\"><span class=\"ez-toc-section\" id=\"Overview\"><\/span>Overview<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Concatenating the strings means combining two strings to make one string. In Solidity, concatenating a string is a complex step. Like in some programming languages, we have a straightforward method: simply use the \u201c+\u201d sign and concatenate a string. But in Solidity, we can\u2019t do this.<\/p>\n\n\n\n<p>In <a href=\"https:\/\/metaschool.so\/articles\/guide-solidity-contracts\/\" target=\"_blank\" rel=\"noreferrer noopener\">Solidity<\/a>, we have different built-in functions that offer string concatenation. In this article, we will discuss two functions one by one. So, let\u2019s dive in.<\/p>\n\n\n\n<p><strong>\ud83d\udd25 Check this course out:<\/strong>&nbsp;<a href=\"https:\/\/metaschool.so\/courses\/create-your-own-ethereum-token-in-just-30-mins\" target=\"_blank\" rel=\"noreferrer noopener\">Create Your Own Ethereum Token in Just 30 Mins<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-using-the-abi-encodepacked-function\"><span class=\"ez-toc-section\" id=\"1_Using_the_abiencodePacked_function\"><\/span>#1: Using the&nbsp;<strong><code>abi.encodePacked()<\/code>&nbsp;function<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In Solidity, some built-in functions can be called without importing any other contract. These functions are ABI-encoded functions. To concatenate the strings we can use&nbsp;<code>abi.encodePacked()<\/code>&nbsp;function. This function simply takes two strings and returns a single-byte type array which we convert to string to create one concatenated string.<\/p>\n\n\n\n<p>Let\u2019s look at an example.<\/p>\n\n\n\n<pre class=\"wp-block-code has-nv-text-dark-bg-background-color has-background\"><code>\/\/ SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\ncontract ExampleContract {\n\n    function concatenate(string memory str1, string memory str2) public pure returns (string memory)\n    {\n\t\t\t\t\/\/ Concatenating the strings\n        return string(abi.encodePacked(str1, str2));\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"explanation\"><span class=\"ez-toc-section\" id=\"Explanation\"><\/span>Explanation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Let\u2019s look at what we did in the example code.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We created a contract named&nbsp;<code>ExampleContract<\/code>.<\/li><li>We created a pure public function named&nbsp;<code>concatenate<\/code>&nbsp;that takes two memory-type string arguments and returns a memory-type string.<\/li><li>We return a string inside the function by concatenating the strings using the&nbsp;<code>abi.encodePacked()<\/code>&nbsp;function and then type-casting it to the string using the&nbsp;<code>string()<\/code>&nbsp;function.<\/li><\/ul>\n\n\n\n<p>\ud83d\udd25&nbsp;<strong>Check this course out:<\/strong>&nbsp;<a href=\"https:\/\/metaschool.so\/courses\/writing-your-first-hello-world-contract-in-solidity\" target=\"_blank\" rel=\"noreferrer noopener\">Write Your First Solidity Smart Contract on Ethereum<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"output-1\"><span class=\"ez-toc-section\" id=\"Output\"><\/span>Output<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Let\u2019s look at how the output will look after running the code in the RemixIDE.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"339\" src=\"https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-1024x339.png\" alt=\"\" class=\"wp-image-7200\" srcset=\"https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-1024x339.png 1024w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-300x99.png 300w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-150x50.png 150w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-768x254.png 768w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-1536x509.png 1536w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-1320x437.png 1320w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2-using-the-string-concat-function\"><span class=\"ez-toc-section\" id=\"2_Using_the_stringconcat_function\"><\/span>#2: Using the&nbsp;<code>string.concat()<\/code>&nbsp;function<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Same as&nbsp;<code>abi.encodePacked()<\/code>&nbsp;function, Solidity&#8217;s newer versions offer a built-in function called&nbsp;<code>string.concat()<\/code>&nbsp;that you can use to perform string concatenation without importing any other <a href=\"https:\/\/metaschool.so\/articles\/structure-of-a-smart-contract\/\" target=\"_blank\" rel=\"noreferrer noopener\">contract<\/a>. The&nbsp;<code>string.concat()<\/code>&nbsp;function takes two string arguments and returns one concatenated string.<\/p>\n\n\n\n<p>Let\u2019s look at an example.<\/p>\n\n\n\n<pre class=\"wp-block-code has-nv-text-dark-bg-background-color has-background\"><code>\/\/ SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\ncontract ExampleContract {\n\n    function concatenate(string memory str1, string memory str2) public pure returns (string memory)\n    {\n\t\t\t\t\/\/ Concatenating the strings \n        return string.concat(str1, str2);\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"explanation\"><span class=\"ez-toc-section\" id=\"Explanation-2\"><\/span>Explanation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Let\u2019s look at what we did in the example code.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We created a contract named&nbsp;<code>ExampleContract<\/code>.<\/li><li>We created a pure public function named&nbsp;<code>concatenate<\/code>&nbsp;that takes two memory-type string arguments and returns a memory-type string.<\/li><li>Inside the function, we return a string by concatenating the two strings using the&nbsp;<code>string.concat()<\/code>&nbsp;function.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"output\"><span class=\"ez-toc-section\" id=\"Output-2\"><\/span>Output<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Let\u2019s look at how the output will look after running the code in the <a href=\"https:\/\/metaschool.so\/articles\/remix-ide-ethereum\/\" target=\"_blank\" rel=\"noreferrer noopener\">RemixIDE<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"339\" src=\"https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-1024x339.png\" alt=\"\" class=\"wp-image-7201\" srcset=\"https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-1024x339.png 1024w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-300x99.png 300w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-150x50.png 150w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-768x254.png 768w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-1536x509.png 1536w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2-1320x437.png 1320w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/02\/output-concatenate-2.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Concatenating the strings has become a straightforward process now as Solidity has evolved using the newer versions. There is also an iterative approach to concatenate the strings, but it is long and a bit tricky to implement. So, it is better to use the built-in functions and make your life&nbsp;easy peasy lemon squeezy.<\/p>\n\n\n\n<p><strong>Try it out and let us know how it went by tagging Metaschool on Social Media.<\/strong><\/p>\n\n\n\n<p><strong>Follow us on<\/strong>&nbsp;\u2013<\/p>\n\n\n\n<p>\ud83d\udd2eTwitter \u2013&nbsp;<a href=\"https:\/\/twitter.com\/0xmetaschool\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/twitter.com\/0xmetaschool<\/a><\/p>\n\n\n\n<p>\ud83d\udd17LinkedIn \u2013&nbsp;<a href=\"https:\/\/www.linkedin.com\/company\/0xmetaschool\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.linkedin.com\/company\/0xmetaschool\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":15,"featured_media":7199,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[292],"tags":[51,46,322,29],"class_list":["post-7193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-answers","tag-blockchain","tag-solidity","tag-string-arrays","tag-web3"],"_links":{"self":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/7193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/comments?post=7193"}],"version-history":[{"count":5,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/7193\/revisions"}],"predecessor-version":[{"id":7212,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/7193\/revisions\/7212"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/media\/7199"}],"wp:attachment":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/media?parent=7193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/categories?post=7193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/tags?post=7193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}