大家好,今天的内容将围绕7-12 统计字符串中字母、数字、空格和其他字符的个数展开,同时也会对统计一个字符串的字母,数字,空格进行详细讲解,希望本文能为您提供实用的信息!
本文目录
在数字化的时代,我们每天都会接触到大量的信息,这些信息往往以字符串的形式存在。字符串是由字母、数字、空格以及其他特殊字符组成的序列。为了更好地理解和分析这些信息,我们需要统计字符串中各类字符的个数。本文将深入探讨字符串中字母、数字、空格及其他字符的个数统计,以期为您揭示字符世界的奥秘。
一、字母
字母是构成字符串的基本元素之一。在英语中,字母分为大写和小写两种形式,共有26个。在我国,常用的汉字数量约为7万多个。因此,字母在字符串中的个数是衡量信息复杂程度的一个重要指标。
1. 英文字母统计
据统计,英语字符串中字母的个数占比较高。例如,在一份包含1000个单词的英语文章中,字母的个数约为6000个左右。由此可见,英文字母在字符串中占据了重要的地位。
2. 汉字统计
与英文字母相比,汉字在字符串中的个数相对较少。在一份包含1000个汉字的文章中,字母的个数可能只有几百个。汉字在表达信息方面具有独特的优势,因此在某些特定领域,如中文文献、新闻报道等,汉字的个数可能超过字母。
二、数字
数字是描述事物数量和顺序的基本符号。在字符串中,数字通常用于表示时间、日期、金额等信息。统计字符串中数字的个数有助于我们了解信息的具体内容。
1. 时间和日期
在字符串中,时间和日期通常以数字的形式表示。例如,“2021年7月12日”中的数字个数为7个。
2. 金额
在财务、金融等领域,金额信息以数字的形式出现。例如,“1000元”中的数字个数为3个。统计金额字符串中数字的个数,有助于我们了解财务状况。
三、空格
空格是字符串中的一种特殊字符,主要用于分隔字母、数字等字符。在统计字符串中空格的个数时,我们需要注意以下两点:
1. 英文空格
英文空格通常位于单词之间,用于分隔不同的字母。在统计英文字符串中空格的个数时,我们可以将空格视为单词的分隔符。
2. 中文空格
中文空格与英文空格的作用类似,但数量相对较少。在统计中文字符串中空格的个数时,我们需要关注标点符号和分隔符。
四、其他字符
除了字母、数字和空格之外,字符串中还可能包含其他特殊字符,如标点符号、符号等。以下是对这些字符的简要介绍:
1. 标点符号
标点符号在字符串中用于表达语气、分隔句子等。例如,逗号、句号、问号等。统计字符串中标点符号的个数,有助于我们了解信息的表达方式。
2. 符号
符号包括数学符号、化学符号等。在字符串中,符号用于表示特定的概念或操作。例如,“+”表示加法,“=”表示等于。统计符号的个数,有助于我们了解信息的具体内容。
总结
通过对字符串中字母、数字、空格及其他字符的个数进行统计,我们可以更好地了解信息的复杂程度、表达方式和具体内容。在数字化时代,字符世界的奥秘等待着我们去探索。只有深入了解字符世界,我们才能更好地驾驭信息,为生活和工作带来便利。
...统计字符串中字母,数字,空格和其他字符的个数,在主函数
#include <stdio.h>
#include <string.h>
int letter,number,blank,other;
void count(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
else if(str[i]>='0'&&str[i]<='9')
number++;
else if(str[i]==' ')
blank++;
else
other++;
}
}
int main()
{
char a[80];
gets(a);
puts(a);
strcat(a,"\0");
letter=0;
number=0;
blank=0;
other=0;
count(a);
printf("\n%5d,%5d,%5d,%5d\n",letter,number,blank,other);
return 0;
}
扩展资料:
C语言需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
百度百科-c语言
...一个字符串中的字母、数字、空格和其它字符的个数。
调试通过
#include "stdio.h"
main ()
{
char s1[80];int a[4]={0};
int k;
/***********SPACE***********/
void fun(char s[],int b[]);
gets(s1);
/***********SPACE***********/
fun(s1,a);
puts(s1);
for(k=0;k<4;k++)
printf("%4d",a[k]);
}
void fun(char s[],int b[])
{
int i;
for (i=0;s[i]!='\0';i++)
if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')
b[0]++;
/***********SPACE***********/
else if ('0'<=s[i]&&s[i]<='9')
b[1]++;
/***********SPACE***********/
else if (s[i]==' ')
b[2]++;
else
b[3]++;
}
字符串在存储上类似字符数组
它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
以上内容参考:百度百科-字符串
lua入门笔记7 字符串库
Lua 中的 string 和 c #中相同, string 类型的值一旦改变,便要为新值开辟空间,并指向此空间。
其他还有很多这里只是简单地举几个例子。
Lua 中由于考虑大小,没有支持正则表达式。而采用了自己的模式匹配。
string.find 函数用于在一个给定的目标字符串中搜索一个模式。最简单的是搜索单词。如果赵傲这个单词,他就会返回单词的其实索引和结束所用,如果没找到则返回 nil
如果匹配成功,就可以用 string,find 的返回值结果来调用 string.sub 来提取出目标字符串中匹配于该模式的那部分子串。
string.find 还有一个可选的第三参数,他是一个索引,告诉函数应从目标字符串的那个位置开始搜索。
函数 string.math 和函数 string.find 在某种意义上很相似,它也是用一个在字符串中搜索的一种模式。
对于固定的模式,该函数可能没有什么意义例如 "hello" 。但当使用变量模式是,它的特性就显现出来了。
string.gusb 函数有3个参数:目标字符串、模式、替换字符串 作用就是将所有出现该模式的地方替换为替换字符串
另外还有可选的第四个参数,可以限制替换的次数
函数是 string.gsub 还有一种结果,即实际替换的次数,例如下面就是一种统计字符串中空格数量的简单方法
string.gmatch 会返回一个函数。通过这个函数可以遍历到一个字符串中所有出现指定摸式的地方。
其中模式 "%a+" 表示匹配一个或多个字母字符的序列(也就是单词),这里会遍历其中所有的单词,并存入其中。在模式中"点"具有特殊的意义,因此若要表示一个点必须写为 "%."
介意用字符分类创建更多有用的模式。字符分类就是模式中的一项。可以与一个热顶级和中的任意字符相匹配。例如分类"%d"可匹配任意数字。例如可以用
"%d%d/%d%d/%d%d%d%d" 来搜索符合 "dd/mm/yyyy" 格式的日期
下面是所有的字符分类
这些分类的大写行使表示他们的补集,例如 "%A" 表示所有非字母字符
在模式里,还有一些字符串被称为“魔法字符”他们有着特殊的含义。这些魔法字符有
{ } . % + - * ? [ ] ^ $
字符串 % 作为这些魔法字符的转义符,例如 "%." 表示匹配一个点 "%%" 表示匹配字符 "%" 不仅可以把 "%" 用于魔法字符,还可以用于其他所有非字母数字的字符。当不确定某个字符是不是需要被转义是,应该直接前置一个转义符。
对于 lua 来说,模式就是普通的字符串。并想起他字符串一样遵循相同的规则。只有模式函数才会解释它们,此时参会将 "%" 当做转义符来处理。
在一堆放括号内将不同的字符分类或者单个字符组合起来,即可创造出属于用户自己的字符分类,这种新的字符分类叫做 字符集(char-set) 。例如,字符集 ["%w_"] 表示同时匹配字母、数字和下划线。字符集 [01] 表示匹配二进制数字 字符集 [%[%]] 表示匹配方括号本身。如果需要统计一段文本中元音的数量,可以这么写
在字符集中表示一段字符范围的做法是写出自付范围的第一个字符和最后一个字符并用横线连接它们,但这种形式用的较少因为大部分常用的字符范围都已经预定义好了。如 [0-9] 即为 %d
[0-9a-fA-F] 则为 "%x" 不过如果需要查找一个8进制的数字,那么可以写 [0-7] 而不是 [01234567] 。在一个字符集前加一个 '^' 即可表示这个字符集的补集。例如 [^0-7] 表示所有非八进制数字的字符。而模式 [^\n] 则表示了除了换行符之外的其他字符。对于简单地分类,使用大写形式也可以得到他的补集, "%S" 显然比 [^%s] 简答
也可以通过修饰符来藐视模式中的重复可选部分。lua提供四种修饰符
“+” 修饰符科普配属于字符串分类的一个或多个字符。他总是获取与模式相匹配的最长序列,模式 "%a+" 表示一个或多个字母,即单词:
模式 "%d+" 匹配一个或多个数组(一个整数)
修饰符 "*" 类似于 "+" ,但它还接受出现0次的情况。一种典型用途是匹配一个模式不同部分之间的空格。 比如说像匹配 () 或者 ( ) 这样的一对圆括号,可以用 "%(%s*%)" 其中的 %s* 可以匹配0到多个空格
另一个示例是使用模式 "[_%a][_%w]*" 来匹配lua中的标识符,标识符是一个由字母或下划线开始,伴随0到多个下划线、字母或数字的序列。
修饰符 "-" 和 "*" 一样,也是用于匹配0个或多个字符的。不过他会匹配最短的子串。虽然看似二者没什么差别但效果截然不同。如果使用 "[_%a][_%w]- " 来查找一个标识符时,他只会查找到第一个字母,因为 "[_%w]-" 总是匹配空串。假设要查找一个c程序中的注释,通常会首先尝试 "/%*.*%/" 然后由于 ".* "会尽可能的扩展,因此程序中第一个 "/*" 只会与最后一个 "*/" 相匹配
但若使用 ".-"话就会变成这样
修饰符"?"用于匹配一个可选的字符。例如要在一段文本中寻找一个整数,而这个整数可以包括一个可选的正负号。那么适用模式"[+-]?%d+"就可以完成这项任任务。他可以匹配项
"-12" "23" "+1000"这样的数字,而"[+-]"是一个匹配'+'号和'-'号的字符分类,后面的'?'说明可这个符号是可选的。与其他系统不同的是,Lua中的修饰符只能用用于一个字符分类,无法对一组分类进行修饰。无法写出一个匹配可选打次的模式。
如果一个模式以一个'^'起始,那么他只会匹配目标字符串的开头部分。如果模式以'$'结尾,他只会匹配目标字符串的结尾部分。
在模式中,还可以用"%b",用于匹配成对的字符。他的写法是"%b<x><y>" 其中<x>和<y>是两个不同的字符串,<x>作为一个起始字符,<y>是作为一个结束字符。例如模式"%b()"可匹配以'('开始,并以')'结束的子串s
Lua 中的 string 和 c #中相同, string 类型的值一旦改变,便要为新值开辟空间,并指向此空间。也就是说每次对 string 变量进行更改操作时返回的是一个新的值,下面的函数中就不再过多去说明了。
其他还有很多这里只是简单地举几个例子。
Lua 中由于考虑大小,没有支持正则表达式。而采用了自己的模式匹配。
string.find 函数用于在一个给定的目标字符串中搜索一个模式。最简单的是搜索单词。如果赵傲这个单词,他就会返回单词的其实索引和结束所用,如果没找到则返回 nil
如果匹配成功,就可以用 string,find 的返回值结果来调用 string.sub 来提取出目标字符串中匹配于该模式的那部分子串。
string.find 还有一个可选的第三参数,他是一个索引,告诉函数应从目标字符串的那个位置开始搜索。
函数 string.math 和函数 string.find 在某种意义上很相似,它也是用一个在字符串中搜索的一种模式。不同的是, string.math 返回的是目标字符串中模式匹配的那部分子串,而并非位置。
对于固定的模式,该函数可能没有什么意义例如 "hello" 。但当使用变量模式是,它的特性就显现出来了。
string.gusb 函数有3个参数:目标字符串、模式、替换字符串 作用就是将所有出现该模式的地方替换为替换字符串
另外还有可选的第四个参数,可以限制替换的次数
函数是 string.gsub 还有一种结果,即实际替换的次数,例如下面就是一种统计字符串中空格数量的简单方法
string.gmatch 会返回一个函数。通过这个函数可以遍历到一个字符串中所有出现指定摸式的地方。
其中模式 "%a+" 表示匹配一个或多个字母字符的序列(也就是单词),这里会遍历其中所有的单词,并存入其中。在模式中"点"具有特殊的意义,因此若要表示一个点必须写为 "%."
介意用字符分类创建更多有用的模式。字符分类就是模式中的一项。可以与一个热顶级和中的任意字符相匹配。例如分类 "%d" 可匹配任意数字。例如可以用
"%d%d/%d%d/%d%d%d%d" 来搜索符合"dd/mm/yyyy"格式的日期
下面是所有的字符分类
这些分类的大写行使表示他们的补集,例如"%A"表示所有非字母字符
在模式里,还有一些字符串被称为“魔法字符”他们有着特殊的含义。这些魔法字符有
{ } . % + - * ? [ ] ^ $
字符串 % 作为这些魔法字符的转义符,例如 "%." 表示匹配一个点 "%%" 表示匹配字符 "%" 不仅可以把 "%" 用于魔法字符,还可以用于其他所有非字母数字的字符。当不确定某个字符是不是需要被转义是,应该直接前置一个转义符。
对于 lua 来说,模式就是普通的字符串。并想起他字符串一样遵循相同的规则。只有模式函数才会解释它们,此时参会将 "%" 当做转义符来处理。
在一堆放括号内将不同的字符分类或者单个字符组合起来,即可创造出属于用户自己的字符分类,这种新的字符分类叫做 字符集 (char-set) 。例如,字符集 ["%w_"] 表示同时匹配字母、数字和下划线。字符集 [01] 表示匹配二进制数字 字符集 [%[%]] 表示匹配方括号本身。如果需要统计一段文本中元音的数量,可以这么写
在字符集中表示一段字符范围的做法是写出自付范围的第一个字符和最后一个字符并用横线连接它们,但这种形式用的较少因为大部分常用的字符范围都已经预定义好了。如 [0-9] 即为 %d
[0-9a-fA-F] 则为 "%x" 不过如果需要查找一个8进制的数字,那么可以写 [0-7] 而不是 [01234567] 。在一个字符集前加一个 '^' 即可表示这个字符集的补集。例如 [^0-7] 表示所有非八进制数字的字符。而模式 [^\n] 则表示了除了换行符之外的其他字符。对于简单地分类,使用大写形式也可以得到他的补集, "%S" 显然比 [^%s] 简答
也可以通过修饰符来藐视模式中的重复可选部分。 lua 提供四种修饰符
“+” 修饰符科普配属于字符串分类的一个或多个字符。他总是获取与模式相匹配的最长序列,模式 "%a+" 表示一个或多个字母,即单词:
模式 "%d+" 匹配一个或多个数组(一个整数)
修饰符 "*" 类似于 "+" ,但它还接受出现0次的情况。一种典型用途是匹配一个模式不同部分之间的空格。 比如说像匹配 () 或者 ( ) 这样的一对圆括号,可以用 "%(%s*%)" 其中的 %s* 可以匹配0到多个空格
另一个示例是使用模式 "[_%a][_%w]*" 来匹配 lua 中的标识符,标识符是一个由字母或下划线开始,伴随0到多个下划线、字母或数字的序列。
修饰符 "-" 和 "*" 一样,也是用于匹配0个或多个字符的。不过他会匹配最短的子串。虽然看似二者没什么差别但效果截然不同。如果使用 "[_%a][_%w]- " 来查找一个标识符时,他只会查找到第一个字母,因为 "[_%w]-" 总是匹配空串。假设要查找一个c程序中的注释,通常会首先尝试 "/%*.*%/" 然后由于 ".*" 会尽可能的扩展,因此程序中第一个 "/*" 只会与最后一个 "*/" 相匹配
但若使用 ".-" 话就会变成这样
修饰符 "?" 用于匹配一个可选的字符。例如要在一段文本中寻找一个整数,而这个整数可以包括一个可选的正负号。那么适用模式 "[+-]?%d+" 就可以完成这项任任务。他可以匹配项
"-12" "23" "+1000" 这样的数字,而 "[+-]" 是一个匹配 '+' 号和 '-' 号的字符分类,后面的 '?' 说明可这个符号是可选的。与其他系统不同的是, Lua 中的修饰符只能用用于一个字符分类,无法对一组分类进行修饰。无法写出一个匹配可选打次的模式。
如果一个模式以一个 '^' 起始,那么他只会匹配目标字符串的开头部分。如果模式以 '$' 结尾,他只会匹配目标字符串的结尾部分。
在模式中,还可以用 "%b" ,用于匹配成对的 字符 。他的写法是 "%b<x><y>" 其中 <x> 和 <y> 是两个不同的字符串, <x> 作为一个起始字符, <y> 是作为一个结束字符。例如模式 "%b()" 可匹配以 '('开始,并以')' 结束的子串
s="a (enclosed (in) parenthesses) line"
print(string.gsub(s,"%d()","") -->a line
这种模式的典型用法包括 "%b()" "%b[]" "%b{}" "%b<>"
捕获功能可根据一个模式从目标字符串中抽出匹配与该模式的内容。在指定捕获时,应将模式中需要捕获的部分写到一对圆括号内。
这里括号中的值为匹配两个单词,括号外是首先匹配空格然后匹配等号继续匹配空格。并且会把表达式中用 () 括起来的值返回。
今天的文章暂时告一段落,希望能帮助大家理解7-12 统计字符串中字母、数字、空格和其他字符的个数,也欢迎大家留言探讨统计一个字符串的字母,数字,空格的实战经验。
0311-83720527
通知公告
0311-83720527