《道德经》第二章第二句“故有无相生,难以相成,长短相形,高下相盈,音声相和,前后相随。”世上有许多事都是相互对应的,没有绝对单独个体的存在。许多事物的发生都需要两两相应的。Solidity中的string类型也是这样的,他要明白自己的“高矮胖瘦”,还得要有别的参照物才能做到。

实验目的

1.学会如何获取string类型字节长度与其中元素。

2.知道如何修改string类型中的元素。

实验要求

1. 调用示例1的两个方法,一个是获取string类型的长度,另一个是获取string类型中的元素。编译一下,看看是否能通过?

2. 查看示例2代码注释里的三个练习,并按要求添加代码替换代码里的3个数字与括号。然后运行查看结果。思考Solidity如何读取string类型的长度与元素。

以下是本次实验所用到的测试代码,请使用remix编辑器完成该实验

// 示例1
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
 
contract DynamicString {
    string name = "zhangsan"; 
//  编译前,依照getPartName函数修改返回内容。
    function getLength() public view returns(uint) {
        return name.length;    
}
    function getPartName() public view returns(bytes1) {
        return bytes(name)[0];    
    } 
}
// 示例2
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
 
contract DynamicBytes {
    string name = "laozi";
    // 请补充代码,将name强制转换为bytes类型,并返回它的长度。
    function getLength() public view returns (uint) {
        return  (1)
    }
    //请补充代码,将name强制转换为bytes类型,并获取索引0处的值。
    function getPartName() public view returns (bytes1) {
        return (2)
    }
    //请补充代码,将name强制转换为bytes类型,并修改索引3处的值为‘L’。
     function changeName() public {
        (3)
    }
}

下面是本实验所配套的视频教程: