0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于字符串数据类型的示例

芯片验证工程师 来源:芯片验证工程师 作者:验证哥布 2022-10-17 14:38 次阅读

字符串数据类型是一个有序的字符集合。

字符串变量的长度是集合中的字符数。

字符串类型的变量是动态的,因为它们的长度在仿真过程中可能会变化。

字符串中的单个字符变量的类型为byte

Syntax:

string variable_name [= initial_value];

如果在声明中未指定初始值,则将变量初始化为" ",一个空字符串。空字符串的长度为零。下面是一个字符串数据类型的示例:

module datatype1;
 string s1 = "hello";
 string s2 = "hello world";
 string s3 = "helloworld"; //  is ignored
 string s4, s5, s6;
 initial
 begin
 s4 = "later";
 s5 = ""; //empty string
 s6 = {"hi", s5}; //concatenation
 #10;
 $display ("s1=%s s2=%s s3=%s s4=%s s5=%s s6=%s", s1, s2, 
s3, s4, s5, s6);
 #100 $fnish;
 end 
 endmodule

在本例中,我们声明了6个字符串,从s1到s6。s1、s2和s3分别进行了初始化。其中字符串s3中的转义字符()被转义为空字符。

然后在“initial”语句块中,将s4赋值为字符串“later”,将s5赋值为空字符串,并连接s5与" hi ",赋值给字符串s6。下面是仿真log:

ncsim> run
s1=hello s2=hello world s3=helloworld s4=later s5= s6=hi

String Operators

字符串数据类型还提供了处理字符串的操作符,如下表所示:

6d915bc8-4c42-11ed-a3b6-dac502259ad0.png

module datatype1; 
 string s2 = "hello world"; 
 string s3 = "helloworld"; 
 string s4, s5;
 string s6 = "compare"; 
 string s7 = "compare"; 
 string s8;
 integer s2len, s3len, s2c;
 initial begin
 #10; $display ("s2=%s s3=%s",s2,s3);
 #100 $fnish;
 end
 initial begin
 #15;
 s2len = s2.len( ); $display("String Length s2 = 
%0d",s2len); 
 s3len = s3.len( ); $display("String Length s3 = 
%0d",s3len);
 if (s2 == s3) $display("s2 = s3"); else $display("s2 
!= s3");
 if (s6 == s7) $display("s6 = s7"); else $display("s6 
!= s7");
 s4 = s2.substr(1,6);
 $display("s4 = %s",s4);
 s5 = "later ";
 s8 = {3{s5}};
 $display("s8 = %s",s8);
 S2c = s2[0];
 $display("s2c = %s",s2c);
 end 
 endmodule


在上面的例子中,声明了字符串s2到s8并初始化为各种字符串。

将字符串长度(.len())赋值给整数类型s2len和s3len。

比较字符串s2和s3以及字符串s6和
s7。

提取s2的部分字符串并将其赋值给s4。

复制s5三次,赋值给s8。

下面是仿真的log:

s2=hello world s3=helloworld
String Length s2 = 11
String Length s3 = 10
s2 != s3
s6 = s7
s4 = ello w
s8 = later later later
s2c = h
$fnish at simulation time 110
 V C S S i m u l a t i o n R e p o r t

String Methods

还有几种方法可用于处理字符串,如下表所示:

6e725f56-4c42-11ed-a3b6-dac502259ad0.png

module sMethods;
 string s1 = "hello";
 string s2 = "hello world";
 string s4;
 string s5 = "GOODBYE";

 byte x;
 integer s2len, s3len, i1, i2;
 initial
 begin
 #15;
 s2len = s2.len( );
 $display("String Length s2 = %0d",s2len);
 s1.putc(0,"C"); //replace 0'th character with 'C'
 $display("String s1 = %s",s1);
 x = s1.getc(0); //get 0'th character of string s1.
 $display("0'th character of string 'Cello' = %s",x);
 s4 = s2.toupper( ); //convert string 's2' to upper case
 $display("Upper Case of 'hello world' = %s",s4);
 s4 = s5.tolower ( );
 $display("Lower case of 'GOODBYE' = %s",s4);

 end
 endmodule

以及仿真log:

String Length s2 = 11
String s1 = Cello
0'th character of string 'Cello' = C
Upper Case of 'hello world' = HELLO WORLD
Lower case of 'GOODBYE' = goodbye
 V C S S i m u l a t i o n R e p o r t

在上面的例子中,

声明一些字符串变量。在“initial”语句块中,我们首先得到字符串(s2 = " hello world ";)的长度11。

然后使用" putc "方法给字符串" s1 "的第0个字符加上字符" C ":

s1.putc(0,“C”);

由于s1字符串是“hello”,它现在变成“Cello”。然后,得到字符串s1的第0个字符(现在是“Cello”):

x = s1.getc (0);

我们使用.toupper方法将" s2 "字符串(s2 = " hello world ")转换为全大写,并将结果存储在字符串" s4 "中:

s4 = s2.toupper ();

将" s5 "字符串(s5 = " GOODBYE ")转换为全小写(.tolower方法)

s4 = s5.tolower ( );

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1326

    浏览量

    109302
  • System
    +关注

    关注

    0

    文章

    161

    浏览量

    36571
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123
  • 数据类型
    +关注

    关注

    0

    文章

    227

    浏览量

    13498

原文标题:SystemVerilog中的字符串数据类型

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEW的数据类型、存储格式

    ,左边的数字代表偏移(offset)数组在内存起始存储位置的字节数。其他数据类型布尔、字符串字符串数组、簇、路径布尔(Boolean)型数据是字节型
    发表于 12-19 15:36

    LabVIEW的数据类型、存储格式

    ,左边的数字代表偏移(offset)数组在内存起始存储位置的字节数。其他数据类型布尔、字符串字符串数组、簇、路径布尔(Boolean)型数据是字节型
    发表于 12-19 15:37

    tcp网络连接类型怎么转成字符串类型

    请教大家,我在做一个tcp服务器,想把客户端的连接ID保存在表格里,不知道怎么把tcp数据类型转成字符串,试了很多办法都不行,请大家帮帮忙,指点下。先谢谢了
    发表于 05-19 17:49

    基于实践的LabVIEW零基础入门视频教程---06 数据类型---字符串

    本课程将用项目与实践的方法带领大家零基础入门LabVIEW,通过教大家用不同的方法编写一款计算器软件,来彻底学会和掌握LabVIEW。看完视频,大家肯定会有收获。[hide]06 数据类型
    发表于 01-19 22:39

    LABVIEW中使用tdms存取字符串数组的问题

    出来的数据类型是波形,提取波形信息后没有办法直接索引连接字符串类型的输出,究竟应该怎么用TDMS存取字符串类型
    发表于 08-15 17:26

    史上最全Python数据类型详解

    中所有转义字符在使用时都不会进行转义操作,这就是元字符串,正则表达式中常见格式。3.List列表类型列表就是一系列数据的顺序组合,并且组合之后可以修改。列表格式:变量 = [值,值,值
    发表于 06-15 14:57

    如何实现SGL数据类型转换为字符串

    如图所示,数据的格式为SGL,一位小数,隐藏无效0.想把数据转换为字符串字符串的结果能否也是显示无效0 3.0显示为3
    发表于 08-12 11:39

    ElasticSearch字符串参数说明

    ElasticSearch字符串数据类型
    发表于 10-25 08:32

    Java基数据类型有哪些?

    Java变量的分类Java整数的类型Java字符类型Java 字符串类型Java基本数据类型转换
    发表于 11-04 06:17

    2.2 python字符串类型

    2.2 python字符串类型1. 如何定义字符串字符串是Python中最常用的数据类型之一。使用单引号或双引号来创建
    发表于 02-17 17:12

    LabVIEW数字、字符串转换为枚举型

    LabVIEW数字、字符串转换为枚举型以利用LabVIEW 中的 Scan From String函数将字符串转换为枚举类型。下面是一个关于如何完成此操作的简单
    发表于 05-13 20:55

    2.2 python字符串类型

    2.2 python字符串类型 1. 如何定义字符串字符串是Python中最常用的数据类型之一。 使用单引号或双引号来创建
    的头像 发表于 02-17 17:08 1229次阅读

    什么是数据类型转换

    常用的3种数据类型:1、Python数据类型第一种:字符串(str)。 2、Python数据类型第二种:整数(int)。 3、Python数据类
    的头像 发表于 02-23 15:21 579次阅读

    字符串的相关知识

    TCL 中的数据类型只有一种:字符串。这些字符串可以是字母、数字、布尔值、标点符号等特殊字符的组合。在某些特殊命令的作用下,字符串可以向其他
    的头像 发表于 03-29 11:41 798次阅读

    redis的五种数据类型

    Redis是一种高性能的内存数据库,常用于缓存、任务队列、分布式锁等场景。它提供了多种数据类型来满足各种不同的需求,包括字符串(string)、哈希(hash)、列表(list)、集合(set
    的头像 发表于 11-16 11:06 345次阅读