精华内容
下载资源
问答
  • 通过实例来学习R对字符串的处理。 用到的数据集是R自带的USArrests 查看该数据集的前几行 > head(USArrests) Murder Assault UrbanPop Rape Alabama 13.2 236 58 21.2 Alaska 10.0 263 48 44.5 Arizona 8.1 294 ...

    通过实例来学习R对字符串的处理。
    用到的数据集是R自带的USArrests
    查看该数据集的前几行

    > head(USArrests)
               Murder Assault UrbanPop Rape
    Alabama      13.2     236       58 21.2
    Alaska       10.0     263       48 44.5
    Arizona       8.1     294       80 31.0
    Arkansas      8.8     190       50 19.5
    California    9.0     276       91 40.6
    Colorado      7.9     204       78 38.7
    

    获取州的名字的集合

    > states = rownames(USArrests);head(states) 
    [1] "Alabama"    "Alaska"     "Arizona"    "Arkansas"  
    [5] "California" "Colorado"  
    

    统计某些字母出现的次数
    使用的R包是stringr,函数是str_count(string, pattern = "")
    具体代码如下:

    > library(stringr)
    > #字母a的个数
    > str_count(states,"a")
     [1] 3 2 1 2 2 1 0 2 1 1 2 1 0 2 1 2 0 2 1 2 2 1 1 0 0 2 2 2 1 0 0 0 2
    [34] 2 0 2 0 2 1 2 2 0 1 1 0 1 1 1 0 0
    

    函数返回值是对于某个字母在数据集的每个元素中出现的次数,在这里是小写字母a。
    看起来使用很简单哎👀
    来个有点儿难度的统计元音字母在数据集中的每个元素中的出现次数

    > vowels <- c("a","e","i","o","u");vowels #新建一个含有5个元音字母的字符串
    [1] "a" "e" "i" "o" "u"
    
    > num_vowels <- vector(mode = "integer",length = 5);num_vowels #设置一个空向量来储存计数结果
    [1] 0 0 0 0 0
    
    > for(i in seq_along(vowels)){
    +   num_aux <- str_count(tolower(states),vowels[i])
    +   num_vowels[i] <- sum(num_aux)
    + } #利用循环来计数,并储存计数结果到空向量num_vowels
    > names(num_vowels) <- vowels;num_vowels #对向量num_vowels命名
     a  e  i  o  u 
    61 28 44 36  8 
    

    首先搞清楚函数seq_along()的作用是什么。
    seq_along(along.with) 参数:along.with take the length from the length of this argument.
    观察实例:

    > seq_along(vowels)
    [1] 1 2 3 4 5
    > seq_along(10:20)
     [1]  1  2  3  4  5  6  7  8  9 10 11
    

    由说明文档和实例,我们可以得知,此函数的主要作用就是生成一个从1开始,步长为1,长度和函数输入值的长度相同的向量。

    看一下,循环是怎么起作用的

    > for(i in seq_along(vowels)){
    +   num_aux <- str_count(tolower(states),vowels[i])
    +   print(num_aux)
    +   num_vowels[i] <- sum(num_aux)
    +   print(num_vowels)
    + }
     [1] 4 3 2 3 2 1 0 2 1 1 2 1 0 2 1 2 0 2 1 2 2 1 1 0 0
    [26] 2 2 2 1 0 0 0 2 2 0 2 0 2 1 2 2 0 1 1 0 1 1 1 0 0
    [1] 61  0  0  0  0
     [1] 0 0 0 0 0 0 1 2 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0
    [26] 0 1 1 2 3 2 1 0 0 0 0 1 1 1 0 0 4 1 0 1 0 0 1 0 0
    [1] 61 28  0  0  0
     [1] 0 0 1 0 2 0 1 0 1 1 2 1 3 2 1 0 0 2 1 0 0 2 1 4 2
    [26] 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 3 1 3 2 1
    [1] 61 28 44  0  0
     [1] 0 0 1 0 1 3 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1
    [26] 1 0 0 0 0 1 1 2 2 2 2 2 0 1 2 2 0 0 0 1 0 1 0 1 1
    [1] 61 28 44 36  0
     [1] 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1
    [26] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0
    [1] 61 28 44 36  8
    

    显而易见,每一次循环计算特定元音字母在数据集的每个元素中出现的次数,并将其出现次数加和,写入空向量num_vowels中。

    参考文献:正则表达式及R字符串处理之终结版(Posted by yphuang on March 15, 2016)

    展开全文
  •  统计某个字符串中含有字符个数的程序   预备的基础知识  C-风格字符串由一系列字符组成,以空值字符结尾('\0') 将字符串作为参数时意味着传递的是 地址,但可以使用const来禁止对 字符串参数进行修改 ...

    目录

    预备的基础知识 

    将C-风格字符串作为参数的函数

    C-风格字符串与常规char数组之间的区别

     统计某个字符串中含有字符个数的程序


     

    预备的基础知识 

    C-风格字符串由一系列字符组成,以空值字符结尾('\0')

    将字符串作为参数时意味着传递的是 地址,但可以使用const来禁止对 字符串参数进行修改

    将C-风格字符串作为参数的函数

    表示字符串的方式有三种:

    1. char数组                                                                    char ghost[15] = "galloping"
    2. 用引号括起来的字符串常量                                                                   "galloping"
    3. 被设置为字符串的地址的char指针                            char * str = "galloping"                                         

    上述这三种类型其实都是char指针(char * ) 

    将字符串作为参数来传递,但 实际传递的是字符串第一个字符的地址。字符串函数原型应将其表示字符串的形参声明为char*类型

    C-风格字符串与常规char数组之间的区别

    字符串有内置结束字符

    包含字符,但不以空值字符结尾的char数组只是数组,不是字符串!

    这意味着不必将字符串长度作为参数传递给函数,而函数可以使用  循环来依次 检查字符串中的每个字符,直到遇到结尾的空值字符为止。比如:while ( *str )

     统计某个字符串中含有字符个数的程序

    #include <iostream>
    unsigned int c_in_str(const char * str, char ch);
    int main()
    {
    	using namespace std;
    	char mmm[15] = "minimum";
    
    	char *wail = "ululate";
    
    	unsigned int ms = c_in_str(mmm, 'm');
    	unsigned int us = c_in_str(wail, 'u');
    
    	cout << ms << " 个 m 在  " << mmm << endl;
    	cout << us << " 个 u 在" << wail << endl;
    
    	cin.get();
    	return 0;
    }
    
    //函数建立
    unsigned int c_in_str(const char * str, char ch)
    {
    	unsigned int count = 0;
    
    	while (*str)  //字符串本身自己带有空值字符
    	{
    		if (*str == ch)
    			count++;
    		str++;
    	}
    	return count;
    }

    巧妙就巧妙在:while来进行判断,虽然简单,但很实用

    运行结果:

    展开全文
  • 一、 封装数据帧、 二、 "数据帧" 附加信息、 三、 "数据帧" 帧同步、 ...七、 字符计数法、 八、 字符填充法 ( 加转义字符 )、 九、 零比特填充法 ( 5 "1" 1 "0" )、 十、 违规编码法、 十一、 透明传输常用方法、





    一、 封装数据帧



    封装数据帧 :

    ① 发送端封装数据帧 :网络层 下发的 IP 数据报 信息基础上 , IP 数据报 的 前面 加上 帧首部 , IP 数据报 的后面 加上 帧尾部 ;

    ② 接收端识别数据帧 : 接收端 收到 物理层 上交的 比特流 之后 , 根据 数据帧 的首部 , 尾部 标记 , 从连续的比特流中 , 识别出 数据帧的 开始 和 结束位置 ;





    二、 “数据帧” 附加信息



    "数据帧" 附加信息 :

    ① 帧界定符 : 首部 和 尾部 包含 很多控制信息 , 其中的一种控制信息 帧定界符 , 用于确定 数据帧的界限 ;

    ② 其它信息 : 除了 帧定界符 之外 , 还包括 差错控制信息 , 流量控制信息 , 物理地址信息 ;





    三、 “数据帧” 帧同步



    "数据帧" 帧同步 :

    ① 帧界定符 : 在 首部 和 尾部 添加的 字段 中有 帧定界符 , 根据 帧定界符 可以确定数据帧的开始 , 结束位置 ;

    ② 帧同步 : 接收方 从 接收到的 二进制 比特流中 , 识别出 数据帧的 其实位置 和 终止位置 ;

    ③ 数据帧 发送 与 接收 : 发送方 从 帧首部 开始发送 , 到 帧尾部 发送完毕 , 接收方 首先从 帧首部 判断数据帧的开始 , 直到 接收到帧尾部 帧定界符 , 确定收到了一个完整的数据帧 ;





    四、 “数据帧” 长度



    数据链路层 帧长 :

    ① 数据帧组成部分 : 帧首部 , 帧数据部分 , 帧尾部 ;

    ② 数据帧帧长 : 帧首部长度 + 帧数据长度 + 帧尾部长度 之和 , 就是数据帧 帧长 ;

    ③ 帧的数据部分长度 限制 : 帧数据部分的 数据长度要 小于等于 最大传送单元 MTU ;

    在这里插入图片描述





    五、 “数据帧” 组装方法



    数据帧 组装方法 :

    • 字符计数法
    • 字符填充法
    • 零比特填充法
    • 违规编码法




    六、 透明传输



    "透明传输" 概念 : 不管传输什么样的比特组合 , 都能够在链路上传输 ;

    数据信息 与 控制信息 区分问题 : 数据中的比特组合 恰好 与 某个控制信息 完全一样 , 此时就需要采取一些措施 , 能够使接收方认为这是数据信息 , 不是控制信息 , 这样才能保证 数据链路层 传输的透明性 ;





    七、 字符计数法



    字符计数法 : 数据帧 首部 的 计数字段 , 表明 数据帧 字符数 ;

    • 计数字段 : 1 Byte ( 字节 ) , 8 bit ( 位 ) ;

    在这里插入图片描述

    缺点 : 所有的数据帧都连续存放 , 如果其中有一个数据帧出错了 , 那么后续所有的数据帧都会出错 ;





    八、 字符填充法 ( 加转义字符 )



    数据帧透明传输需求 :

    ① 数据帧封装 : 数据帧 添加 帧首部 , 和 帧尾部 ; 帧首部 和 帧尾部 之间的部分就是实际的数据 ;

    ② 传输 文本文件 : 数据帧 的数据 是 文本文件组成时 , 数据都是 ASCII 码 , 键盘上传输的任何字符 , 都 可以透明传输 ;

    ③ 传输 非文本文件 : 如果传输的文件是 非 文本文件 , 如 图像 , 音频 , 视频 等 , 此时 文件中的数据可能是任意值 , 就有可能与 帧尾部 或 帧首部 相同 , 此时就需要 采用 字符填充法实现 透明传输 ;



    字符填充法 :

    ① 数据的随机性 : 原始数据中 , 存在 与 帧首部 , 帧尾部 相同的数据 ;

    ② 发送端填充转义字符 : 在这些 数据中的 帧首部 / 帧尾部 相同的数据前 , 填充一个转义字符 , 告诉接收端 , 转义字符后的后续数据作为帧数据 , 不当做 帧首部 / 帧尾部 使用 ;

    ③ 接收端接收数据 : 接收端 接收到的数据中有 转义字符 + 帧首部 / 尾部 样式的信息时 , 将转义字符后的数据当做帧数据 ; 当接收到 单独的 帧首部 / 尾部 时 ( 没有转义字符 ) , 才将其当做数据帧的首部 / 尾部 ;





    九、 零比特填充法 ( 5 “1” 1 “0” )



    零比特填充法 :

    ① “数据帧” 首部尾部设定 : 数据帧首部尾部 都设定成 01111110 01111110 01111110 , 解决 数据中出现 01111110 01111110 01111110 数据的情况 , 实现透明传输 ;

    ② 发送端 : 扫描发送数据 , 发现有连续的 5 5 5 1 1 1 , 就在后面加上一个 0 0 0 ; 这样 帧数据 永远不会出现 6 6 6 1 1 1 的数据 ;

    ③ 接收端 : 扫描接收数据 , 发现有连续的 5 5 5 1 1 1 , 就将后面的 0 0 0 删除 ; 对应 发送端的操作 ;


    这样在比特流中可以传输任意比特组合 , 不会引起 数据帧 边界判定错误的问题 , 实现了透明传输 ;





    十、 违规编码法



    正常编码 : 曼彻斯特编码 / 差分曼彻斯特编码 中 , 不管是 0 0 0 , 还是 1 1 1 , 在码元 中肯定会跳变一次 , 要么是 高-低 跳变 , 要么是 低-高 跳变 ;

    违规编码 : 使用 “高-高” , “低-低” 码元 来作为 数据帧 的 起始 和 终止 边界 ;





    十一、 透明传输常用方法



    字符计数法 中如果出现差错 , 导致后果太严重 , 一般情况下不使用该方法 ;

    字符填充法 实现复杂 , 兼容性差 , 一般情况下也不使用 ;


    常用的透明传输实现方法是 零比特填充法 和 违规编码法 ;

    展开全文
  • 统计某个字符串出现的次数

    万次阅读 2017-02-17 14:46:30
    经常需要统计一个字符串出现的次数。常用的有如下两种方式:1.VIMvim是linux世界中的利器。用vim打开文件,然后输入::%s/objectStr//gn图中的例子就是统计文本中”|”字符串出现的次数。2.GREPgrep也是linux世界中...

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
    欢迎大家star,留言,一起学习进步

    经常需要统计一个字符串出现的次数。常用的有如下两种方式:

    1.VIM

    vim是linux世界中的利器。用vim打开文件,然后输入:

    :%s/objectStr//gn
    

    这里写图片描述

    图中的例子就是统计文本中"|"字符串出现的次数。

    2.GREP

    grep也是linux世界中的利器。

    grep -o "objectStr" filename | wc -l
    

    这里写图片描述

    通过这种方式也能达到目的。

    另外附上几个grep常用的参数:
    -c 只显示有多少行匹配 ,而不具体显示匹配的行
    -i 在字符串比较的时候忽略大小写
    -n 在每一行前面打印该行在文件中的行数

    展开全文
  • 统计某个字符串出现的次数判断testStr字符串或者字符testChar是否存在目标字符串中targetStrpackage sun.rain.amazing;import org.apache.commons.lang3.StringUtils; import org.junit.Test;/** * 统计某个字符串...
  • 查找目录下的所有文件中是否含有某个字符串 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri &amp;quot;IBM&amp;quot; 查找目录下的所有文件中是否含有某个字符串,并且只打印出...
  • 计算某个字符串中有多少个回文子串例:思路代码如下: 例: 输入一个字符串S 例如“bbaca” 符合条件的字符串有"b",“b”,“bb”,“a”,“c”,“a”,“aca” 所以答案:7 思路 首先筛选首尾相同字母的字符串,如aa...
  • =COUNTIF($D$2:$D$235,"*"&D4&"*") 统计D4这个字符串在D2-D235中出现的次数
  • 可以统计某个字符串中特定的字符,将其转化成正则表达式容易识别的简单字符. select replace('黑化肥发灰挥发会发黑灰化肥发黑', '化', '|') as t from dual; 通过 regexp_replace 函数去除其他的字符即可. length ...
  •  * 通过hashmap实现统计字符串数组中某个字符串出现的次数的方法  */ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class ...
  • Linux中如何统计某个字符串个数?

    千次阅读 2019-08-31 11:01:10
    比如,分析日志文件中某个单词或者某个特殊字符串出现了多少次。 对于匹配统计,一般用到正则方法,下面总结了几个统计字符串个数的方法。 方法一:使用 grep 命令 grep -o '字符串' file |wc -l 方法二:使用...
  • 需要查验生产环境,某文件夹下,模糊匹配 *202005*的文件,是否包含字符串'image_',并输出文件名 #指令如下 grep -rl image_ *202005* 结果如下: 追根溯源,grep菜谱之强大 grep 简介 grep(Global Regular ...
  • 判断某个字符串是否为数字

    万次阅读 2006-06-08 12:09:00
    判断某个字符串是否为数字,各个语言实现方法里不尽相同。在VBS中,IsNumeric()函数的实际作用是判断参数表达式是否是数值,而这个所谓的“数值”不仅仅包含普通的数字,还包括(但可能不限于)如下情况: 科学计数...
  • 字符串 - NUL - NULL - ‘\0’ - 判断字符串 s2 是否包含字符串 s1 的排列 1. 字符串常量 (string literal) 许多人对 C 语言不存在字符串类型感到奇怪,不过 C 语言提供了字符串常量。C 语言存在字符串的概念:它...
  • C++中string字符串查找某一子字符串所有出现过的位置,并计数 (可用于招聘软件笔试题中的应用) 直接上示例代码: #include <iostream> #include <string> using namespace std; int main() { ...
  • 欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 ...
  • 就是直接循环遍历s1,每次在s1中裁剪s2长度的字符与s2比较,这种方式缺点是每次计数加1,效率太低。 调用String 的indexOf可以统计出s2的初始位置,并且可以指定开始位置,可是开始位置如果每次加s2串的长度,如上,...
  • string arr = "患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?...最近自己在学习c#语言,差不多都快学完了,突然想到这个问题,统计指定字符串,自己搞了半天才搞出来,想想自己是有多菜,还得加油呀。...
  • SELECT SUM ( ( LENGTH (TRAIN_NO) - LENGTH (REPLACE(TRAIN_NO, ‘,’, ”)) ) + 1 ) FROM NC_PROBLEM_NOTE WHERE PART_NUMBER = # { partNumber } AND MILES B
  • 前言 Linux中分析查看日志中,有时候需要统计出文本中,满足条件的...一、日志中,包含某条件的行数 find access_log.20160423.txt | xargs cat | grep .*POST\\s\\/upload\\/zyb-prd.*|wc -l 例子说明:统计含"P
  • 判断字符串中是否有某个子串 这里有六个方法 不使用string模块 1.in 存在则输出TRUE 不存在则输出FALSE a = 'love you' b = 'you' c = 'no' print(b in a) #True print(c in a) #False 2.find() 从左向右查找子串 ...
  • 1.统计文件夹的数量统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数...|wc -l 统计/imagedata/data/20161108目录(包含子目录)下的所有txt文件 ls -lR /imagedata/data/201...
  • 在是否包含市级信息,是否包含“市”、“区”、县”等字样、是否包含空格等方面 存在大量不一致,无法采用统一的标记及顺序行提取。 目标 尽量避免缺失值地生成区县变量,内容为不包含地区行政级别的区县名称,一 ...
  • HIVE SQL中常用的字符串处理函数

    千次阅读 2018-12-26 10:57:21
    1,获取某个字符的位置 instr(big_string, small_string) 返回值为整数。 如果包含,则返回第一个的位置,位置计数从1开始,而不是从0开始。 如果不包含,则返回0. 2,从大字符串中截取子串 substr(big_...
  • 某个笔试题:生成一个不少于6位的随机密码,要求含有大写字母、小写字母、数字、特殊字符中的三种。
  • * 给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。 * 示例: * 输入: S = "ADOBECODEBANC", T = "ABC" * 输出: "BANC" * 说明: * 如果 S 中不存这样的子串,则返回空...
  • SQL判断字符串里不包含字母

    千次阅读 2014-08-27 20:47:00
    ISNUMERIC 校验时认为科学计数法、货币符号均为合法,如果此类数据不加转换 直接插入数据库的float、decimal等字段中是会出异常。以下函数可用于校验字符串是否为数字类型,仅允许输入+、-、0-9、.字符. -- ...
  • C#中的字符字符

    千次阅读 2019-07-16 16:41:29
    Char Char在C#中表示一个Unicode字符,正是这些Unicode字符构成了字符串。Unicode字符是目前计算机通用的字符编码,它为...【Is开头的方法大多是判断Unicode字符是否为某个类别】 【To开头的方法主要是转换为其他...
  • 删除文件中包含关键词的行 删除特定字符 1.1、删除特定位置的字符 1.2、删除指定字符 正则表达式 删除csv文件中的某几列 读取txt文件并取其某一列数据 替换文件里的字符 删除文件中包含关键词的行 带...
  • python字符串、字符串处理函数及字符串相关操作

    万次阅读 多人点赞 2014-04-12 23:23:25
    http://blog.csdn.net/pipisorry/article/details/42085723字符串介绍python字符串表示Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹:&gt;&gt;&gt; 'spam eggs' 'spam eggs' &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,572
精华内容 35,028
关键字:

包含某个字符计数