1

I am looking to trim the last two characters of a string in solidity.

For instance:

 string = "Johnny";

I would like to trim the "ny" and end up with

 string = "John";

Thanks!!!

wardsback
  • 399
  • 1
  • 5
  • 12

2 Answers2

2

Doing this correctly will require a fairly sophisticated string library, as characters in a string are represented in UTF-8, and have varying lengths. There are a number of string libraries available, but I'm not sure if any of them will give you a substring without modification.

If you are confident you will only be dealing with characters represented in UTF-8 as a single byte (basically Latin letters and numbers and some symbols) you can use the method described in this answer: Substring in solidity

Note that in most cases it's preferable to perform operations like string manipulation outside your contract (for example in your JavaScript application) and pass either the pre-formatted content or its hash to the contract.

Edmund Edgar
  • 16,897
  • 1
  • 29
  • 58
0

Here's a shorter, gas-efficient answer without for loops:

function trim(string calldata str, uint start, uint end) external pure returns(string memory) {
    return str[start:end];
}

This takes a string and start and end positions to trim the given string.

Adam Boudj
  • 2,361
  • 1
  • 8
  • 21