Bash字符串处理(与Java对照) - 8.计算字符串长度

Bash字符串处理(与Java对照) - 8.计算字符串长度

In Java

取字符数量

一个汉字算1个字符。

int len = s.length();

 

JavaDoc class String 写道
public int length()

Returns the length of this string. The length is equal to the number of Unicode code units in the string.

Specified by:
length in interface CharSequence

Returns:
the length of the sequence of characters represented by this object.

 

取字节数量

一个汉字算几个字节,取决于编码方式。

int numOfBytes = s.getBytes().length;

 

JavaDoc class String 写道
byte[] getBytes()
Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array.
byte[] getBytes(Charset charset)
Encodes this String into a sequence of bytes using the given charset, storing the result into a new byte array.
byte[] getBytes(String charsetName)
Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.
 

In Bash

取变量STR的长度(推荐方式)

格式:${#STR}

 

[root@jfht ~]# STR="Hello World"
[root@jfht ~]# echo ${#STR}
11

 

使用expr length命令取字符串长度

用expr命令,也可以取到字符串长度,但都没有上面的高效,因为上面的方式是Bash内置的方式,而expr命令是外部命令。

格式:expr length $STR

man expr 写道
length STRING
   length of STRING

 

使用expr match命令取字符串长度

格式1:expr "$STR" : ".*"

格式2:expr match "$STR" ".*"

man expr 写道
STRING : REGEXP
    anchored pattern match of REGEXP in STRING
match STRING REGEXP
    same as STRING : REGEXP
 

 

[root@jfht ~]# STR="Hello World"
[root@jfht ~]# expr length $STR
expr: 语法错误

因为STR中包含空白,造成了问题,要加上双引号。
[root@jfht ~]# expr length "$STR"
11

[root@jfht ~]# expr "$STR" : ".*"
11

[root@jfht ~]# expr match "$STR" ".*"
11

 

用wc命令取字符串长度

使用wc命令也可以实现字符串长度计算。

格式1:wc -c <<<"$STR"

比实际的字节数多1,会多输出一个换行,等同于 echo "$STR" | wc -c 而不是下面这个

格式2:echo -n "$STR" | wc -c

上面是计算字节数,如果是中文的话,每个中文为2个字节(当LANG=zh_CN.GB18030)。

格式3:wc -m <<<"$STR"

比实际的字符数多1,会多输出一个换行,等同于 echo "$STR" | wc -m 而不是下面这个

格式4:echo -n "$STR" | wc -m

上面是计算字符数,与${#STR}相同,每个汉字是按1个字符计算。

man wc 写道
-c, --bytes
    print the byte counts

-m, --chars
    print the character counts
 

[root@jfht ~]# STR=123456789

[root@jfht ~]# echo ${#STR}
9
[root@jfht ~]# wc -c <<<"$STR "
10

[root@jfht ~]# echo -n "$STR" | wc -c
9
[root@jfht ~]# wc -m <<<"$STR"
10

[root@jfht ~]# echo -n "$STR" | wc -m
9
[root@jfht ~]# STR=今年是2011年

[root@jfht ~]# echo ${#STR}
8
[root@jfht ~]# wc -c <<<"$STR" 
13

[root@jfht ~]# echo -n "$STR" | wc -c
12
[root@jfht ~]# wc -m <<<"$STR"
9

[root@jfht ~]# echo -n "$STR" | wc -m
8

[root@jfht ~]# STR="Hello World"

[root@jfht ~]# echo ${#STR}
11
[root@jfht ~]# wc -c <<<"$STR"
12

[root@jfht ~]# echo -n "$STR" | wc -c
11
[root@jfht ~]# wc -m <<<"$STR"
12

[root@jfht ~]# echo -n "$STR" | wc -m
11

 

、

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

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

上节内容:Bash字符串处理(与Java对照) - 7.字符串与默认值

下节内容:Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符

 

 

Shiro反序列化漏洞利用:Payload长度限制与HTTP协议处理深度解析 在Web安全领域,反序列化漏洞是攻击者利用应用程序将序列化数据还原为对象时执行恶意代码的一种常见手段。其原理在于,当程序反序列化不可信数据时,攻击者可以构造特定的序列化对象,触发预设的恶意逻辑链,从而执行任意命令或代码。这种技术的核心价值在于能够绕过常规的输入验证,直接作用于应用运行时环境,对系统安全构成严重威胁。在实际渗透测试中,尤其是在利用Apache Shiro框架的反序列化漏洞时,攻击者常会遇到Payload构造正确但利用失败的情况,这往往与HTTP协议层和中间件的处理机制有关。HTTP请求头长度限 阅读详情

相关推荐

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

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

weixin_30321449的博客 457

Shell中计算字符串长度的5种方法

一、使用 wc -L 命令 wc -L(一定是大写L)可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取;另外 wc -l(一定是小写的l)则是获取当前字符串内容的行数 echo "abc" | wc -L #结果为 3 表示长度 echo "abc" | wc -l #结果为1 表示行数 二、使用 expr length string 命令 expr length "abc" #结果为 3 三、通过 awk+length 的方式获取字符串长度 echo "abc" | awk '{

sinat_34241861的博客 8993

手把手教你用光耦搭建安全隔离电路:从洗衣机控制板到PLC输入模块实战

本文通过洗衣机控制板驱动高压电机和PLC输入模块采集现场信号两个实战场景,手把手教你使用光耦搭建安全隔离电路。文章详细解析了电路架构、关键器件选型、参数计算、仿真验证及PCB布局避坑技巧,并对比了光耦与数字隔离器的适用场景,帮助电子工程师掌握这门保障系统稳定与安全的必备技能。

h6j7k8l9p0的博客 462

linux 在bash查找字符串长度,Bash查找字符串

在本小节中,将演示如何在Bash脚本中计算字符串的长度。字符串中的字符总数表示字符串的长度。在某些情况下,我们可能需要了解字符串的长度才能执行某些特定任务。大多数编程语言都有自己的内置函数来计算字符数。但是,Bash没有此类内置函数。在Bash脚本中,可以使用几种方法来查找字符串的长度。1. Bash计算字符串的长度要计算字符串的长度,可以使用以下几种语法之一:1. ${#string}2. ...

weixin_28751115的博客 1514

告别纯文本RAG:用Dify 1.11.0多模态知识库,5步搭建一个能“读图”的智能客服助手

本文详细介绍了如何利用Dify 1.11.0多模态知识库构建智能视觉客服助手,通过5个步骤实现图片内容理解与专业回复。从准备多模态素材到配置知识库节点,再到设计工作流逻辑和性能优化,帮助开发者快速搭建高效客服系统,显著提升用户体验和问题解决效率。

weixin_30832143的博客 451

树莓派入门教程 - 0 - 准备篇 - 0.0 SD卡制作树莓派系统镜像启动盘 开机

电脑需要提前安装的工具: sd卡格式化工具SDFormatter,官网下载链接:https://www.sdcard.org/downloads/formatter/ 镜像烧录工具Win32 Disk Imager,官网下载链接:https://win32diskimager.download/ 使用到的硬件: 一张容量大于等于16GB的TF卡 + 读卡器; 树莓派板卡。3B、3B+、4B等各型号均可,带有 HDMI接口即可。 HDMI接口的显示屏。 鼠标、键盘、电脑。 1....

Mark_md的博客 6971

Shell中获取字符串长度的七种方法

求字符串操作在shell脚本中很常用,下面归纳、汇总了求字符串的几种可能方法: 【方法一】:利用${#str}来获取字符串的长度 【方法二】:利用awk的length方法 备注: 1) 最好用{}来放置变量 2) 也可以用length($0)来统计文件中每行的长度 【方法三】:利用awk的NF项来获取字符串长度 备注: -F为分隔符,NF为域的个数,即单行字符串的长度 【方法四】:利用wc的-L参数来获取字符串的长度 备注: -L参数 1) 对多行文件来说,表示打印最长行的长

chenpuo的博客 1万+

ESP32学习,驱动LED点阵屏,SD卡播放GIF动图

搬运就可以实现效果,如果有不足,请批评指正。下步该学一下如何文章上视频了,老是截图不方便展示效果。

u011625956的博客 1868

Java如何求得字符串的长度

Javad得到字符串的长度方法

程序员大腾的博客 2万+

WRFDA如何读取风云四号A 星的GIIRS数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1025

Python 爬虫实战:爬取今日头条文章与阅读量数据

本文详细介绍了基于Python爬取今日头条文章与阅读量数据的完整方案。通过分析今日头条API接口,采用Requests+正则表达式技术实现数据抓取,重点解决加密参数构造、请求头模拟、反爬规避等核心问题。文章包含文章列表获取、详情数据提取、互动数据采集等完整流程,并提供数据存储与基础分析方法。同时强调合规使用爬虫技术,控制爬取频率,避免干扰平台运营。该方案可为内容传播分析、用户兴趣研究提供数据支持,但需注意接口参数更新和反爬机制变化,适时调整代码实现。

2503_91057718的博客 2519

Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符...

Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符 In Java 取指定索引位置的字符 char     charAt(int index)          返回指定索引处的 char 值,其中index从0开始计数。   遍历字符串中的字符 int len = s.length(); for (int i = 0; ...

巨人站在肩膀上 316

2、实时DSP编程技术及其应用

本文详细介绍了实时数字信号处理(DSP)技术及其应用,涵盖三种流行的浮点DSP处理器系列的特点、开发工具和优化方法。通过具体的应用实例,如语音压缩、音乐信号处理和雷达信号处理,展示了如何在实际项目中应用这些技术,帮助工程师提高系统的性能和可靠性。

cicd6pipeline的博客 838

【Linux】Shell 脚本中的字符串处理技巧

本文介绍了Shell脚本中的字符串处理技巧,包括字符串定义与赋值、长度计算、截取与切片等基础操作,并通过密码强度检查和文件路径处理等实战案例展示了这些技巧的应用。文中还提供了对应的Java代码示例,便于开发者对比理解不同语言中的字符串处理方式。文章内容实用,适合Shell脚本初学者和进阶开发者学习参考。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7888

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Bash字符串处理(与Java对照) - 25.字符串分割(成数组)

Bash字符串处理(与Java对照) - 25.字符串分割(成数组) In Java String.split  String[]     split(String regex)           根据给定的正则表达式的匹配来拆分此字符串。  String[]     split(String regex, int limit)           根据匹配给定的...

巨人站在肩膀上 319

efm32 入门.pdf

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

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

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

Nicholas的专栏 QQ1295794532 1139

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Bash编程

在Linux系统使用过程中,不可避免的要编写脚本,如进行大量重复操作,或需要根据条件自动执行某操作。本文介绍了bash脚本编写的相关内容,文末有一些示例。 文章目录一、bash脚本介绍1. shell2. bash脚本二、bash脚本基础1. 编程语言分类2. 编写代码的约定三、bash语法介绍1. 变量bash中的变量类型变量声明本地变量的声明只读变量的声明环境变量的声明局部变量的声明变量的引用...

Brahming的博客 1287

Shell字符串操作

拼接、截取、长度

荣耀之路 1634

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

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

weixin_34007886的博客 457

计算机语言document,Java 语言的几个缺陷之一: 无 Here Document

Java 语言由于一直要保持源代码及二进制的向后兼容, 所以尽管语法上有了很大的演进, 但有些东西仍然无法触及. 不像有些新生代的语言设计时可以博采众长, 或者像 Scala 那种语言向后兼容性的要求没这么苛刻, Scala 只要保持主, 次版本相同时的兼容性. Java 则不同, 1.0 的代码或字节码放到 1.8 下还要能跑.实际应用中在多个语言切换时, 很自然的会对其他语言与 Java ...

weixin_39633134的博客 251

shell变量

1,定义变量时变量名和等号 之间不能有空格,且有以下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 2,使用变量 在变量前面加$或${},花括号可加可不加。加括号是为了识别变量的边界 for skill in Ada Coffe Actio...

qq_33436509的博客 243

Bash命令执行绕过技巧:从空格过滤到无字母数字RCE实战

命令注入是Web安全中常见的高危漏洞,攻击者通过构造恶意输入,使目标系统执行非预期命令。其核心原理在于应用程序未对用户输入进行充分过滤,直接将输入拼接至系统命令中执行。在防御层面,开发者常采用黑名单过滤、关键字检测、特殊字符禁用等手段,但Bash解释器自身的灵活性和丰富的语法特性为绕过提供了可能。从工程实践看,理解Bash的词法分析、解析展开流程是关键,例如利用$IFS变量替代空格、通过变量拼接动态生成关键字、使用Base64或十六进制编码隐藏命令意图。这些技巧在CTF靶场和渗透测试中具有重要价值,能帮助安

weixin_34268753的博客 379

Apache Shiro反序列化漏洞实战:绕过WAF长度限制的完整攻防解析

Java反序列化漏洞是Web安全领域的经典威胁,其原理在于程序对不可信数据进行反序列化时,可能触发恶意代码执行。在Apache Shiro框架中,RememberMe功能的AES加密Cookie若使用默认密钥,攻击者可构造恶意序列化链实现远程命令执行。为防御此类攻击,WAF常部署请求参数长度限制等规则,通过增加攻击载荷体积门槛来提升防御效果。本文聚焦于**WAF绕过**与**反序列化漏洞**的对抗实践,深入剖析如何在严格长度限制下,通过精简Gadget链、优化命令载荷、利用加密Padding特性等**工程化

weixin_30338497的博客 743
上一篇: Bash字符串处理(与Java对照) - 7.字符串与默认值
下一篇: Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符...
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值