Bash字符串处理(与Java对照) - 15.计算子串出现的次数

Bash字符串处理(与Java对照) - 15.计算子串出现的次数

In Java

StringUtils.countMatches

org.apache.commons.lang.StringUtils countMatches方法 写道
public static int countMatches(String str, String sub)

Counts how many times the substring appears in the larger String.

A null or empty ("") String input returns 0.

StringUtils.countMatches(null, *) = 0
StringUtils.countMatches("", *) = 0
StringUtils.countMatches("abba", null) = 0
StringUtils.countMatches("abba", "") = 0
StringUtils.countMatches("abba", "a") = 2
StringUtils.countMatches("abba", "ab") = 1
StringUtils.countMatches("abba", "xxx") = 0


Parameters:
str - the String to check, may be null
sub - the substring to count, may be null
Returns:
the number of occurrences, 0 if either String is null

 

countMatches的实现代码

(摘自 StringUtils)

public static int countMatches(String str, String sub) {
    if (isEmpty(str) || isEmpty(sub)) {
        return 0;
    }
    int count = 0;
    int idx = 0;
    while ((idx = str.indexOf(sub, idx)) != INDEX_NOT_FOUND) {
        count++;
        idx += sub.length();
    }
    return count;
}

public static final int INDEX_NOT_FOUND = -1;

public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
}
 

In Bash

子串出现的次数

格式:grep -o "$SUB" <<<"$STR" | wc -l

错误:grep -c -o "$SUB" <<<"$STR"    注:开始以为这个可以,经过检验之后不行,因为-c参数只会打印匹配的的行数。

man grep 写道
-o, --only-matching
     Show only the part of a matching line that matches PATTERN.

       -c, --count
              Suppress normal output; instead print a count of matching lines for  each  input  file.   With  the  -v,
              --invert-match option (see below), count non-matching lines.
 

[root@jfht ~]# x="This is a test"
[root@jfht ~]# grep -o "t" <<<"$x" | wc -l    
2
[root@jfht ~]# grep -o "T" <<<"$x" | wc -l
1
[root@jfht ~]# grep -o "[tT]" <<<"$x" | wc -l
3
[root@jfht ~]# grep -o "t|T" <<<"$x" | wc -l    
0
[root@jfht ~]# grep -o "t\|T" <<<"$x" | wc -l
3

 

字符出现的次数

格式:TMP=${STR//[^cC]}; ${#TMP}

意思是说将STR字符串中所有不是c和C的字符删除掉,保存到TMP中,那么得到TMP的长度就是c或C出现的次数

 

[root@jfht ~]# x="This is a test"    
[root@jfht ~]# y=${x//[^tT]}
[root@jfht ~]# echo $y
Ttt
[root@jfht ~]# echo ${#y}
3

 

 

本文链接:http://codingstandards.iteye.com/blog/1182146   (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录) 

上节内容:Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)

下节内容:Bash字符串处理(与Java对照) - 16.判断是否以另外的字符串开头

 

 

Unicode字符处理实战:解决多语言文本中的“视觉相同”匹配难题 在软件开发和数据处理中,字符编码是确保信息准确存储与交换的基础。Unicode作为全球字符集标准,通过码点为每个字符赋予唯一标识,但其复杂的组合字符与变体选择符机制,可能导致视觉相同的字符拥有不同的底层编码,从而引发数据匹配错误和安全风险。理解Unicode规范化原理,掌握NFC、NFD等标准形式,对于保障数据一致性、实现精准搜索和防范同形异义字攻击具有重要技术价值。尤其在涉及国际化、用户生成内容处理或数据清洗的场景中,正确处理这些Unicode细节是避免隐蔽线上Bug的关键。本文聚焦于**变体选择符**和 阅读详情

相关推荐

Shell脚本if条件判断:语法、测试与实战避坑指南

在Linux运维与自动化脚本开发中,流程控制是实现脚本智能化的核心。条件判断语句(如if-then-else)是流程控制的基础,它允许脚本根据特定条件的真假执行不同的代码分支,从而实现决策逻辑。其技术价值在于将简单的命令序列升级为具备逻辑判断能力的自动化工具,极大地提升了脚本的灵活性和实用性。在应用场景上,它广泛用于文件存在性检查、命令执行结果判断、用户输入验证以及系统状态监控等。本文聚焦于Shell脚本中if条件判断的深度解析,详细对比了传统[ ]与现代[[ ]]测试结构的差异,并系统梳理了字符串、整数、

weixin_30328063的博客 442

StringUtils常用方法介绍

1、空字符串检查public static boolean isEmpty(String str); public static boolean isNotEmpty(String str);上面两个方法是判断字符串是否为”“或者null。public static boolean isBlank(String str); public static boolean isNotBlank(Strin

zhanghuiyu01的博客 1万+

考研复试机试C++数据结构与算法模板大全

数据结构与算法是计算机科学的核心基础,其中线性表、树、图等基础数据结构在工程实践中广泛应用。通过STL等标准库实现的高效数据结构操作,能够显著提升代码执行效率。在考研机试等编程能力测试场景中,熟练掌握动态数组、链表、二叉搜索树等数据结构的工程实现尤为关键。本文提供的C++模板代码针对机试高频考点,包含动态数组的2倍扩容策略、链表的狸猫换太子删除法等23种数据结构实现,以及DFS的三种写法和背包问题的空间优化等18类算法模板,特别适合需要快速提升编程实战能力的考生。所有代码均通过边界测试验证,并附带时间复杂度

weixin_33937913的博客 618

StringUtils工具类的使用

一、数组转成字符串: 1、 将数组中的字符转换为一个字符串 将数组中的字符转换为一个字符串 @param strToConv 要转换的字符串 ,默认以逗号分隔 @return 返回一个字符串 String[3] s={"a","b","c"} StringUtil.convString(s)="a,b,c" 2、 stati...

Y云 327

MySQL从入门到实战:环境搭建、SQL核心与性能优化指南

在实际数据库开发、数据分析和后端工作中,MySQL 是绕不开的核心技能。很多开发者虽然能写简单的 SELECT * FROM table ,但面对复杂查询、性能优化、数据类型选择和事务控制时,却常常感到力不从心。从零基础到真正能在生产环境中游刃有余地使用 MySQL,需要一条清晰、系统且能落地的学习路径。 本文旨在为初学者和希望系统巩固 MySQL 技能的开发者,提供一份从环境搭建到核心概念,再到高级应用的完整实践指南。我们将摒弃空洞的理论,全程以动手操作为主,涵盖安装配置、SQL 语法精讲、数据类型选择、

weixin_34128839的博客 643

Keil v5.11给STM32烧录程序记录

1)安装KeilMDK511 2)安装ST Link下载器驱动 3)打开Keil v5,加载工程文件 4)load pack(Keil.STM32F1xx_DFP.1.1.0和Keil.STM32F0xx_DFP.1.2.0) 5)编译程序- 0 Error(s), 0 Warning(s). 6)烧录程序 ...

守望的距离 6281

StringUtils常用方法解析

是Apache Commons Lang库中的一个工具类,提供了许多用于处理字符串的实用方法。以下是一些。

cxkjntm123的博客 2892

Android HDMI-CEC协议解析:从机顶盒到电视的无缝遥控联动

本文深入解析Android HDMI-CEC协议,实现机顶盒与电视间的无缝遥控联动。通过剖析设备角色、消息格式及核心操作码,并结合Android HdmiControlManager API实战,详细讲解如何实现电源同步、按键穿透及音量控制,最终解决多设备遥控繁琐的痛点,提升用户体验。

egg99的博客 974

org.apache.commons.lang.StringUtils常用方法

参考文章:https://www.cnblogs.com/stm32stm32/p/9178180.html,https://www.cnblogs.com/renjiaqi/p/11321745.html package cn.wiztek.chsls.license; import org.apache.commons.lang.StringUtils; public class Te...

qq_36750461的博客 2448

UWB灵犀遥控器方案介绍

UWB灵犀指向遥控器的技术原理和方案介绍

xiongdauwb的博客 3898

X电容与Y电容,看这一篇就够了

本文详细介绍了X电容与Y电容的定义、作用、位置、分类,以及它们在实际应用中的容值选取和计算方法。通过汽车电子应用和X电容放电电路的实例,帮助读者深入理解这两种安规电容的重要性。文章还探讨了电容放电电阻的计算,确保符合安全规范。

让你爱上电路设计 7015

java commons-lang3 包中 StringUtils 处理字符串的方法介绍

java 字符串操作大全,commons-lang3

gyk163的博客 2457

【yolo】YOLOv8模型导出完全指南:从PT到ONNX及其他格式的完整实践

摘要:本文全面介绍了YOLOv8模型从PT格式导出为ONNX等部署格式的完整流程与最佳实践。重点解析了关键参数(如format、imgsz、simplify)的作用机制,特别强调输入尺寸imgsz会自动继承训练尺寸的特性,并提供了ONNX、TensorRT等格式的典型导出配置方案。文章还总结了常见问题解决办法,推荐使用simplify优化模型性能,同时分享了通过C#实现模型重命名的实用技巧。最后指出"训练决定能力,导出定义接口"的核心原则,帮助开发者高效完成模型部署转换。

songhuangong123的博客 1917

Java程序员的Bash实用指南系列之字符串处理(目录)

Java程序员的Bash实用指南系列之字符串处理(目录) 文章   在一般的计算机编程语言中,字符串处理是很重要的一块,Bash也是如此,如果掌握了字符串的处理,基本上就能够应付大部分的编程工作了。在Unix/Linux操作系统中,很多时候需要使用多个命令一起配合才能完成一个较复杂的任务,Shell提供了管道线、重定向、结构化编程等方式,把这些命令粘合在一起。因此,命令之间的接口数据的处理

Nicholas的专栏 QQ1295794532 1139

基于STM32、HAL库的SC16IS752IPW总线转UART驱动程序设计

/ FIFO空间不足。// 设置LCR寄存器的DLAB位为1以访问DLL/DLH。// 设置LCR寄存器,先访问DLL/DLH。// 设置LCR寄存器(不包含DLAB位)

corlin6688的博客 815

FastAPI 高级特性:同异步路由函数、依赖注入与后台任务

在现代 Web 开发中,高效的性能和简洁的代码结构是至关重要的。FastAPI 作为一个现代、快速(高性能)的 Web 框架,凭借其对异步编程的原生支持和直观的依赖注入系统,迅速成为开发者的热门选择。在本文中,将深入探讨 `FastAPI` 中的几个核心概念:同异步函数的区别、`Depends` 依赖以及后台任务。

qq_43629857的博客 203

【Java入门到精通】*基础篇

Java入门教程摘要(1-6期) 本系列从零讲解Java,基于Java 8 LTS版本。 Java历史与特性:1995年Sun公司发布,以跨平台、面向对象为核心优势,应用于后端、安卓、大数据等领域。 跨平台原理:通过JVM将字节码转换为机器码,实现"一次编写,到处运行"。 环境组件:JDK(开发工具包)⊃ JRE(运行环境)⊃ JVM(虚拟机),开发需安装JDK。 安装配置:提供Windows/Mac的JDK安装指南,强调路径无中文/空格。 环境变量:设置JAVA_HOME指向JDK路径,Path添加bin

2301_81248642的博客 930

【100%通过率】华为OD机试真题 Python 实现【打印机队列】【2022.11 Q4 新题】

有5台打印机打印文件,每台打印机有自己的待打印队列。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的代先级,其中数字越大优先级越高。打印机会从自己的待打印队列中选择优先级最高的文件来打印。如果存在两个优先级一样的文件,则选择最早进入队列的那个文件。现在请你来模拟这5台打印机的打印过程。

MISAYAONE的博客 1万+

Shell编程的艺术:输入输出、运算符与脚本交互全解析

掌握Shell编程的关键在于灵活运用输入输出、运算符和脚本交互技巧。本文将深入解析Shell编程的核心技术点,助你编写高效、美观的Shell脚本。

XYL6AAD8C的博客 1563

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Shell脚本编程:数据类型与运算全解析

在编程语言中,数据类型是构建程序的基础元素。Shell作为一门弱类型脚本语言,其变量本质上都是字符串,但通过特定的语法和工具可以实现数字运算、数组操作等复杂功能。理解Shell的弱类型特性及其隐式转换规则,对于编写健壮的脚本至关重要。算术展开$(( ))和bc工具分别处理整数和浮点运算,而数组和关联数组则提供了管理数据集合的有效方式。这些特性使Shell能够胜任系统管理、数据处理等场景,特别是在Linux环境下的自动化任务中。掌握Shell数据类型操作技巧,可以显著提升脚本开发效率并避免常见陷阱。

weixin_30613433的博客 351

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

PAT 乙级 1040. 有几个PAT(25)

1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);

爱旅行的风的博客 371

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux系统运维常用命令集锦

1、文件、目录操作命令(18个) ls 全拼为list,功能是列出目录的内容及其内容属性信息。 主要参数: -a:显示隐藏文件 -l:是以更详细的列表形式显示-S: 以下命令参数待不全: cd 全拼为change directory,功能是从当前工作目录切换到指定的工作目录。 cp 全拼为copy,功能为复制文件或目录。 find 查找,用于查找目录及目录下文件。 mkdir 全拼为make di...

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 3万+

Linux第四讲

shell,Linux,

m0_56528635的博客 912

Shell 脚本笔记(一)欢迎讨论指点

变量名由字母、数字、下划线组成,不能以数字开头左右两侧绝对不能有空格Bash 中变量默认都是字符串类型,无法直接进行数学运算变量值包含空格时,必须使用双引号包裹不能使用 Shell 关键字(if、for、while 等)作为变量名变量名区分大小写# 直接赋值即可,无需额外命令name="张三"echo $name# 方式1:定义同时导出# 方式2:先定义普通变量,再导出city="深圳"declare -x 变量=值与上述写法效果完全一致。$0:脚本名$1‑$n:接收传入参数。

conglucky的博客 369

Wireshark高级使用:捕获与显示过滤器的本质区别与实战

网络协议分析的核心在于理解数据生命周期——从网卡抓取、内核缓冲、内存加载到应用层呈现。Wireshark的性能瓶颈与误判根源,往往源于混淆捕获过滤器(作用于libpcap驱动层,决定哪些原始字节写入pcap)和显示过滤器(运行于GUI进程,仅控制视图可见性)。前者关乎系统资源与数据完整性,后者聚焦协议语义与业务逻辑。掌握二者分工,才能高效处理HTTPS明文缺失、海量pcap卡顿、TCP重传漏检等典型问题;结合tshark命令行预筛、editcap离线裁剪及协议字段链式过滤(如http2.header.val

weixin_34174105的博客 437
上一篇: Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)...
下一篇: 在Linux下怎么用Bash判断是否存在某种模式的文件名
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值