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

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

In Java

String.startsWith

 boolean     startsWith(String prefix)
          测试此字符串是否以指定的前缀开始。


 boolean     startsWith(String prefix, int toffset)
          测试此字符串是否以指定前缀开始,该前缀以指定索引开始。相当于 this.substring(toffset).startsWith(prefix)

 

StringUtils.startsWith & StringUtils.startsWithIgnoreCase & StringUtils.startsWithAny

org.apache.commons.lang.StringUtils startsWith方法 写道
public static boolean startsWith(String str, String prefix)

Check if a String starts with a specified prefix.

nulls are handled without exceptions. Two null references are considered to be equal. The comparison is case sensitive.

StringUtils.startsWith(null, null) = true
StringUtils.startsWith(null, "abc") = false
StringUtils.startsWith("abcdef", null) = false
StringUtils.startsWith("abcdef", "abc") = true
StringUtils.startsWith("ABCDEF", "abc") = false


Parameters:
str - the String to check, may be null
prefix - the prefix to find, may be null
Returns:
true if the String starts with the prefix, case sensitive, or both null

 

org.apache.commons.lang.StringUtils startsWithIgnoreCase方法 写道
public static boolean startsWithIgnoreCase(String str, String prefix)

Case insensitive check if a String starts with a specified prefix.

nulls are handled without exceptions. Two null references are considered to be equal. The comparison is case insensitive.

StringUtils.startsWithIgnoreCase(null, null) = true
StringUtils.startsWithIgnoreCase(null, "abc") = false
StringUtils.startsWithIgnoreCase("abcdef", null) = false
StringUtils.startsWithIgnoreCase("abcdef", "abc") = true
StringUtils.startsWithIgnoreCase("ABCDEF", "abc") = true


Parameters:
str - the String to check, may be null
prefix - the prefix to find, may be null
Returns:
true if the String starts with the prefix, case insensitive, or both null

 

org.apache.commons.lang.StringUtils startsWithAny方法 写道
public static boolean startsWithAny(String string, String[] searchStrings)

Check if a String starts with any of an array of specified strings.

StringUtils.startsWithAny(null, null) = false
StringUtils.startsWithAny(null, new String[] {"abc"}) = false
StringUtils.startsWithAny("abcxyz", null) = false
StringUtils.startsWithAny("abcxyz", new String[] {""}) = false
StringUtils.startsWithAny("abcxyz", new String[] {"abc"}) = true
StringUtils.startsWithAny("abcxyz", new String[] {null, "xyz", "abc"}) = true


Parameters:
string - the String to check, may be null
searchStrings - the Strings to find, may be null or empty
Returns:
true if the String starts with any of the the prefixes, case insensitive, or both null
 

In Bash

使用[[ ]] 模式匹配来判断是否以别的字符串开头(推荐方式)

格式:[[ $STR == $PREFIX* ]]

 

[root@web ~]# STR=ISO9001
[root@web ~]# PREFIX=ISO
[root@web ~]# [[ $STR == $PREFIX* ]] && echo "starts"
starts
[root@web ~]# PREFIX="ISO 9"
[root@web ~]# [[ $STR == $PREFIX* ]] && echo "starts"
[root@web ~]# STR="Yes ISO9001"
[root@web ~]# PREFIX=ISO
[root@web ~]# [[ $STR == $PREFIX* ]] && echo "starts"
[root@web ~]#

 

使用[[ ]] 正则表达式匹配来判断是否以别的字符串开头

格式:[[ $STR =~ ^$PREFIX ]]

注意:必须加上^,否则所有包含该字符串的也会匹配,而不只是以该字符串开头的。

 

[root@web ~]# PREFIX=ISO
[root@web ~]# STR=ISO9001
[root@web ~]# [[ $STR =~ ^$PREFIX ]] && echo "starts"
starts
[root@web ~]# STR="Yes ISO9001"
[root@web ~]# [[ $STR =~ ^$PREFIX ]] && echo "starts"
[root@web ~]#

 

以截取子串判断相等的方式来判断是否以别的字符串开头

格式:N=${#PREFIX}; [ "${STR:0:N}" == "$PREFIX" ]

 

[root@web ~]# PREFIX=ISO
[root@web ~]# STR=ISO9001
[root@web ~]# [ "${STR:0:3}" == "$PREFIX" ] && echo "starts"
starts
[root@web ~]# N=${#PREFIX}
[root@web ~]# [ "${STR:0:N}" == "$PREFIX" ] && echo "starts"
starts
[root@web ~]# [ "${STR:0:$N}" == "$PREFIX" ] && echo "starts"
starts
[root@web ~]#

 

用case语句来判断是否以别的字符串开头

正确:case "$STR" in "$PREFIX"*) echo "starts"; esac

错误:case "$STR" in "$PREFIX*") echo "starts"; esac

注意*不能写在双引号里面,否则不灵。

 

[root@web ~]# PREFIX=ISO
[root@web ~]# STR=ISO9001
[root@web ~]# case "$STR" in "$PREFIX*") echo "starts"; esac
[root@web ~]# case "$STR" in "$PREFIX"*) echo "starts"; esac
starts
[root@web ~]#

 

 

用掐头法判断是否以别的字符串开头

格式:[ "${STR#$PREFIX}" != "$STR" ]

 

[root@web ~]# PREFIX=ISO
[root@web ~]# STR=ISO9001

[root@web ~]# echo "${STR#$PREFIX}"
9001
[root@web ~]# [ "${STR#$PREFIX}" != "$STR" ] && echo "starts with"
starts with
[root@web ~]#

 

 

其他的利用 grep, expr match, expr substr, cut 等的方法,因为都采用外部命令方式,有些杀鸡用牛刀了,此处不列出了。

 

 

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

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

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

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

 

 

Shell脚本入门:从零到自动化,掌握Linux运维核心技能 Shell脚本是Linux和Unix系统中实现自动化任务的核心技术,它通过将一系列命令、控制逻辑和数据处理打包成可执行文件,让计算机自动完成重复性工作。其原理基于系统Shell解释器逐行执行脚本中的命令,结合变量、条件判断、循环和函数等编程结构,实现复杂的流程控制。在技术价值上,Shell脚本以其直接调用系统命令、高效处理文件和进程、以及无缝粘合各种命令行工具的优势,成为运维工程师、后端开发者和系统管理员必备的技能。应用场景广泛,包括日常的日志文件批量重命名、服务器状态监控与告警、数据库定时备份等自动化运维 阅读详情

相关推荐

多语言与特殊字符处理:从编码原理到Java/Python/JS工程实践

字符编码是计算机处理文本的基础,它定义了字符与二进制数据的映射规则。UTF-8作为当前事实标准,因其兼容ASCII、变长设计及广泛支持,成为处理多语言混合文本的首选。理解编码原理对于解决数据传输、存储和显示中的乱码问题至关重要,其技术价值在于保障全球化和用户生成内容场景下的数据完整性与系统健壮性。在工程实践中,从数据库设计(如MySQL的utf8mb4)、后端代码(Java/Python/JS的显式编码指定)到前端渲染(HTML meta charset与字体支持),构建全链路UTF-8环境是核心。本文聚焦

weixin_30321449的博客 457

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

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

gyk163的博客 2457

16、高效编写稳健Shell脚本的准则与工具

本文详细介绍了编写稳健且高效Shell脚本的准则与工具,涵盖编码规范基础、实践技巧、错误处理机制、命令行参数解析、帮助信息设计、信号陷阱、临时文件处理等内容,并推荐了ShellCheck和new_script等实用工具。通过遵循这些规范和使用相关工具,开发人员可以更高效地编写出可读性强、可维护性高的Shell脚本,适应各种复杂应用场景。

silver的专栏 90

StringUtils 中的 startWith方法和startWithAny方法

startWith源码: private static boolean startsWith(final CharSequence str, final CharSequence prefix, final boolean ignoreCase) { if (str == null || prefix == null) { return str == null &&

gloryzyf 5457

第16章 Shell企业编程基础

曾经有人说过,学习Linux不知道Shell编程,那就是不懂Linux,现在细细品味确实是这样。Shell是操作系统的最外层,Shell可以合并编程语言以控制进程和文件,以及启动和控制其它程序。Shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出,简单来说Shell就是一个用户跟操作系统之间的一个命令解释器。

lihuhelihu的博客 1294

starts-with-any:如果给定的字符串或数组以任何给定的子字符串开头,则返回true

从任何开始 如果给定的字符串或数组以任何给定的子字符串开头,则返回true。 安装 用安装 $ npm i starts-with-any --save 用法 var startsWithAny = require ( 'starts-with-any' ) ; 真的 以下所有返回true : startsWithAny ( 'abc' , 'a' ) ; startsWithAny ( 'xyz' , 'x' ) ; startsWithAny ( [ 'a' , 'b' , 'c' ] , 'a' ) ; startsWithAny ( [ 'x' , 'y' , 'z' ] , 'x' ) ; startsWithAny ( 'abc' , [ 'a' , 'z' , 'c' ] ) ; startsWithAny ( 'xyz' , [ 'x' , 'y' , 'z' ]

BASH SHELL 判断是否以某个字符串开头

# ${var:0:2} 取var子串,从第0个字符起,取2两个字符if [[ ${var:0:2} -eq "cn" ]] then echo sub is chinese ${var:0:2} else echo sub is english ${var:0:2} fi

qq_23251505的博客 2112

IMU卡尔曼滤波方法详细介绍

本文介绍了基于IMU和卡尔曼滤波的状态估计方法。系统采用9维状态向量(位置、速度、加速度计零偏),通过牛顿运动学建立状态方程,并利用外部位置观测进行校正。详细推导了状态转移矩阵和控制输入矩阵的形式,阐述了预测和更新的计算步骤。同时说明了过程噪声Q和观测噪声R的设置原则,其中Q反映模型不确定性,R取决于传感器精度。该方法可有效融合IMU测量与外部观测数据,实现位置、速度和偏置的联合估计。

haing2019的博客 756

StringUtils工具类用法

/*1.字符串以prefix开始*/ StringUtils.startsWith("sssdf","");//结果是:true StringUtils.startsWith("sssdf","");//结果是:true StringUtils.startsWith("sssdf","s");//结果是:true StringUtils.startsWith("sssdf",...

weixin_34240657的博客 572

芯片设计新思路:如何用SystemC+TLM2.0快速搭建ESL性能模型(附GEM5实战案例)

本文探讨了在芯片设计早期利用SystemC和TLM2.0标准快速构建电子系统级(ESL)性能模型的方法。通过对比不同抽象层次,详细介绍了如何搭建事务级模型,并与GEM5仿真平台协同,实现高效的架构探索和性能评估。文章最后通过一个片上网络(NoC)带宽优化的实战案例,展示了该方法如何驱动数据驱动的设计决策,从而在流片前规避风险、优化芯片性能。

fire9的博客 368

MATLAB小白也能搞定!BCT脑网络分析工具箱安装与入门指南

本文为零基础用户提供了一份详尽的BCT脑网络分析工具箱安装与入门指南。从MATLAB环境配置、BCT工具箱下载与路径添加,到连接矩阵构建、节点度与聚类系数等基础指标计算,手把手带领神经科学研究者跨越编程门槛,快速掌握脑影像数据分析的核心流程。

threejs5artist的博客 1089

在bash中,如何检查字符串是否以某个值开头?

我想检查字符串是否以“ node”开头,例如“ node001”。 就像是 if [ $HOST == user* ] then echo yes fi 我该怎么做?

p15097962069的博客 5753

SpringBoot 整合 Drools:从环境搭建到复杂业务落地,精通规则引擎实战指南

本文介绍了Drools规则引擎的基础概念及其与SpringBoot的整合方法。首先概述了规则引擎的核心价值,包括业务规则解耦、可维护性提升等。重点讲解了Drools的核心组件(规则、事实、会话等)及其工作原理。随后详细说明了在SpringBoot项目中集成Drools的步骤,包括添加依赖、配置自动加载规则文件、创建KieContainer等关键配置类。文章还提供了完整的DRL规则文件示例和SpringBoot集成配置代码,为开发人员提供了从理论到实践的完整指导。通过这种方式,可以轻松实现业务规则与系统代码的

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1431

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

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

Nicholas的专栏 QQ1295794532 1139

量化交易 米筐 因子分组打分(成长因子)

分组动手练习 在米筐上因子数据没有处理,提供的很多因子没有默认分类,存在一些因子没有的情况,我们就选择一些常见的因子。 价值因子 质量因子 成长因子(历史名称) pe_ratio return_on_invested_capital in_revenue pcf_ratio du_return_on_equity inc_eps pb_ratio return_on_asset_net_profit inc_total_asset market_cap return_on_equ

廷益_飞鸟的博客 932

Power domain 划分该如何下手

假如PD1比PD3更always on的话,我们只需要插入普通buffer即可,因为PD3 on,PD1也肯定是ON,PD1 off,PD3肯定时off,PD1能cover PD3的电源情况,因此使用普通buffer也可,但是处于省电角度,我们还是使用AO buffer;在我们做多power domain时,在切分power domain时,需要谨慎,稍有不慎,就会出现congestion以及timing问题,那问题来了,我们在切分power domain时有什么考究么,今天小编就和大家一起讨论讨论。

芯冰乐 206

Bash的陷阱

版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/01/09/bash-pitfalls/以及本声明。<!--google_ad_client = "pub-3705997236397030";//文章内容右侧广告google_ad_slot = "1819082211";google_ad_w

mr_wenhui的专栏 681

c#视觉应用开发中如何使用Emgu CV在C#中进行图像处理?

Emgu CV 是 OpenCV 的 .NET 包装器,可以让开发者在 .NET 语言(如 C#)中使用 OpenCV 的功能进行图像处理。在进行图像处理时,Emgu CV 提供了丰富的 API 可以使用。PictureBoxImageBox下面是一个详细的示例,演示如何使用 Emgu CV 在 C# 中进行基本的图像处理,包括加载图像、转换为灰度图像、进行边缘检测,然后显示结果。byte在这个示例中,我们使用了三个PictureBox控件来显示原始图像、灰度图像和边缘检测后的图像。

zhangzhechun的专栏 667

Linux个人心得16 (shell脚本)

本文分享了Linux Shell脚本的学习心得与实践经验。作者从基础命令开始,逐步掌握Shell脚本自动化处理能力,将其视为Linux系统的"魔法棒"。文章系统介绍了Shell脚本的核心概念、基础语法(变量、输入输出、条件判断、循环),并通过批量重命名、数据库备份、猜数字游戏等实战案例展示应用场景。同时总结了新手常见错误,如变量赋值空格、路径处理等问题。作者强调Shell脚本的核心在于解决问题的思维,而非复杂语法,鼓励通过实践掌握这一Linux自动化利器,并计划进一步学习高级特性。全文为

2501_94830992的博客 361

Kafka 入门篇(一)

初识 Kafka 什么是 Kafka Kafka 的基本术语 Kafka 的特性(设计原则) Kafka 的使用场景 Kafka 的消息队列 点对点模式的消息队列 发布-订阅模式的消息队列 Kafka 系统架构 核心 API Kafka 为何如此之快 broker 端配置 broker.id port zookeeper.connect log.dirs num.recovery.threads.per.data.dir auto.create.topics.enable topic默认配置 num.par

1232

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Bash的陷阱[zt]

Bash的陷阱版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/01/09/bash-pitfalls/以及本声明。 感谢fcicq,他的new 30 days系列为我们带来了不少好文章。今天想分析的是这篇Bash Pitfalls, 介绍了一些bash编程中的经典错误。fcicq说可能不适合初学者,而我...

weixin_33814685的博客 108

efm32 入门.pdf

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

java groovy 表达式_Groovy的基础语法

Groovy的基础语法Groovy 的语法融合了 Ruby、Python 和 Smalltalk 的一些最有用的功能,同时保留了基于 Java 语言的核心语法。对于Java 开发人员,Groovy 提供了更简单的替代语言,且几乎不需要学习时间。语句Groovy的语句和Java类似,但是有一些特殊的地方。例如语句的分号是可选的。如果每行一个语句,就可以省略分号;如果一行上有多个语句,则需要用分号来分...

weixin_39799290的博客 3152

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Shell编程

1.Shell编程 2.bash 和 sh的关系 **sh 是bash的快捷方式** 3.创建一个 .sh文件 权限不够怎么办 chmod 777 a.sh修改权限即可 4shell变量 4.1 在shell脚本中, 定义变量时,变量名不加美元符号($),如: your_name="runoob.com" 注意 : 变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。 同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以

qq_45769990的博客 1万+

GB2312、UTF-8、UCS-2编码对照:原理、转换与乱码排查实战

字符编码是计算机存储和处理文本的基础,它定义了字符与二进制数据之间的映射规则。其核心原理在于为每个字符分配唯一的数字标识(码点),并通过特定算法转换为字节序列。理解编码原理对于确保数据在不同系统间正确交换至关重要,尤其在处理中文等多语言文本时。GB2312、UTF-8和UCS-2是三种关键编码方案,分别代表了不同时期和场景下的技术标准。掌握它们之间的对应关系与转换方法,能有效解决文件乱码、数据库字符集设置错误(如 `error while setting value '.-default-character

weixin_34007886的博客 457

[Bash Shell] Shell学习笔记

[Bash Shell] Shell学习笔记 阅读目录 1. Shell简介 2. 几种常见的Shell 3. 编译型语言和解释型语言的区别  4. 什么时候使用Shell? 5. 第一个Shell脚本 6. Shell变量 7.Shell特殊变量 8. Shell替换 9. Shell运算符 10. Shell注释 11. Shell字

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值