Strings library (#1746)
* Feature Issue #1745 * Feature Issue #1745 remove whitespace in contract * Feature Issue #1745 fix Solidity linter issues * Feature Issue #1745 fix JS lint issues * Update contracts/drafts/Strings.sol Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com> * Update contracts/drafts/Strings.sol Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com> * Update contracts/drafts/Strings.sol Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com> * Updates based on PR feedback * Remove trailing whitespace * Update tests based on @nventuro feedback * Removed return name * Rename length as suggested * Rename temp variables in uint256ToString * Renamed bytes variable to buffer * Change concatenate to use abi.encodePacked * Moved OraclizeAPI reference to unit256ToString * Add emoji concat test * Remove concatenate * Remove concatenate from StringsMock and test * Rename function to fromUint256 * Update StringsMock.sol
This commit is contained in:
committed by
Nicolás Venturo
parent
a83f680a63
commit
fbbff53528
38
contracts/drafts/Strings.sol
Normal file
38
contracts/drafts/Strings.sol
Normal file
@ -0,0 +1,38 @@
|
||||
pragma solidity ^0.5.0;
|
||||
|
||||
/**
|
||||
* @title Strings
|
||||
* @dev String operations.
|
||||
*/
|
||||
library Strings {
|
||||
/**
|
||||
* Concatenates two strings.
|
||||
* string(abi.encodePacked(a, b))
|
||||
* https://solidity.readthedocs.io/en/latest/types.html?highlight=concatenate
|
||||
*/
|
||||
|
||||
/**
|
||||
* @dev Converts a uint256 to a string.
|
||||
* via OraclizeAPI - MIT licence
|
||||
* https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
|
||||
*/
|
||||
function fromUint256(uint256 value) internal pure returns (string memory) {
|
||||
if (value == 0) {
|
||||
return "0";
|
||||
}
|
||||
uint256 temp = value;
|
||||
uint256 digits;
|
||||
while (temp != 0) {
|
||||
digits++;
|
||||
temp /= 10;
|
||||
}
|
||||
bytes memory buffer = new bytes(digits);
|
||||
uint256 index = digits - 1;
|
||||
temp = value;
|
||||
while (temp != 0) {
|
||||
buffer[index--] = byte(uint8(48 + temp % 10));
|
||||
temp /= 10;
|
||||
}
|
||||
return string(buffer);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user