PHP转Go系列 | 字符串的使用姿势

news2024/12/23 10:31:56

大家好,我是码农先森。

输出

在 PHP 语言中的输出比较简单,直接使用 echo 就可以。此外,在 PHP 中还有一个格式化输出函数 sprintf 可以用占位符替换字符串。

<?php

echo '码农先森';
echo sprintf('码农:%s', '先森');

在 Go 语言中调用它的输出函数之前还需要先引入 fmt 包,这个包提供了非常全面的输入输出函数。如果只输出普通字符串,那么使用 Print 函数即可。此外,在 Go 中也有一个同名同功能的字符串格式化函数 Sprintf。

package main

import "fmt"

func main() {
    fmt.Print("码农先森")
    fmt.Print(fmt.Sprintf("码农:%s", "先森"))
}

长度

在 PHP 语言中使用函数 strlen 计算字符串的长度。

<?php

echo strlen('码农先森');

在 Go 语言中使用函数 len 来计算字符串长度,这里因为要统计汉字的数量,因此引入了 unicode/utf8 包。

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
	fmt.Print(len("码农先森"))
	fmt.Print(utf8.RuneCountInString("码农先森"))
}

截取

PHP有一个substr函数用来截取任意一段字符串。

<?php
echo substr('Hello World', 0, 3);

Go中的写法有些特别,它是将字符串当做数组,截取其中的某段字符,比较麻烦的是,在PHP中可以将第二个参数设置为负数进行反向取值,但是Go无法做到。

package main

import (
    "fmt"
)

func main() {
    str := "Hello World"
    fmt.Print(str[0:3])
}

搜索

在 PHP 语言中使用 strpos 查询某个字符串出现的位置。

<?php

echo strpos('Hello World', 'l');

在 Go 语言中先引入 strings 包,再调用 Index 函数来实现。

package main

import (
    "fmt"
    "strings"
)

func main() {
	fmt.Print(strings.Index("Hello World", "l"))
}

替换

在 PHP 语言中替换字符串使用 str_replace 内置函数。

<?php

echo str_replace('World', 'China', 'Hello,World');

在 Go 语言中使用 strings 包中的函数 Replace,不同的是第四个参数是必填的,它代表替换的次数,为 0 则代表不替换。

package main

import (
    "fmt"
)

func main() {
	fmt.Print(strings.Replace("Hello World", "World", "China", 1))
}

连接

在 PHP 语言中最经典的就是用点来连接字符串。此外,也可以使用 implode 函数连接。

<?php

echo 'Hello' . ',' . 'World'; 
echo implode(["Hello", "World"], ",")

在 Go 语言中用加号来连接字符串。此外,还可以使用 strings 包中的 Join 函数连接。

package main

import (
    "fmt"
)

func main() {
    fmt.Print("Hello" + "," + "World") 

    str := []string{"Hello", "World"}
    fmt.Print(strings.Join(str, ","))
}

分割

在 PHP 语言中可以使用 explode 函数分割字符串。

<?php

echo explode("Hello,World", ",")

在 Go 语言中可以使用 strings 包中的 Split 函数连接。

package main

import (
    "fmt"
)

func main() {
    fmt.Print(strings.Split("Hello,World", ","))
}

总结

以上是 PHP 语言与 Go 语言在常用的字符串处理场景中的用法,字符串处理在实际的编程中使用的最为频繁,因此我们需要很好的掌握它。

推荐

PHP 语言中的函数是如此强大、丰富、便利,PHP 程序员转到 Go 语言来,发现很多方法都需要自己封装,很不适应。因此给大家推荐一个很好网站,可以直接通过 PHP 语言中的函数找到对应在 Go 语言中的函数,这简直是转 Go 语言 PHP 程序员的福音,网站地址:https://www.php2golang.com/


欢迎关注、分享、点赞、收藏、在看,我是码农先森。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1840735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pikachu靶场之XSS漏洞测试

一、环境配置 1.pikachu官网下载 下载地址&#xff1a;https://github.com/zhuifengshaonianhanlu/pikachu 2.百度网盘&#xff08;里面含有pikachu跟phpstudy&#xff09; 链接&#xff1a;pikachu下载 密码&#xff1a;abcd 配置&#xff1a;pikachu下载及安装-图文详解…

14K屏FPGA通过MIPI接口点亮

一、屏参数 屏分辨率为13320*5120&#xff0c;MIPI接口8 LANE。 二、驱动接口电路 屏偏置电压5.5V&#xff0c;逻辑供电1.8V。8 LANE MIPI&#xff0c;2 PORT。 三、MIPI DSI规范 DCS (Display Command Set)&#xff1a;DCS是一个标准化的命令集&#xff0c;用于命令模式的显…

基于单片机的智能窗户控制系统的设计

摘 要&#xff1a; 根据单片机技术和现代传感器技术 &#xff0c; 本文主要针对基于单片机的智能窗户控制系统的设计进行探讨 &#xff0c; 仅供参考 。 关键词&#xff1a; 单片机 &#xff1b; 智能窗户 &#xff1b; 控制系统 &#xff1b; 设计 在现代科学技术持续发展的带…

融资融券两融利率最低多少?两融利率最低账户怎么申请?

融资融券账户余额理财技巧 融资融券账户不支持货币基金申赎、逆回购等业务&#xff0c;投资者可以将资金大于维保比例300%的部分通过银证转账转出再转入到普通账户&#xff0c;参与证券公司现金理财或逆回购等业务。 融券卖出和还券技巧 融券卖出所得的资金仅能用于买券还券&…

Linux操作系统学习:day05

内容来自&#xff1a;Linux介绍 视频推荐&#xff1a;[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0530、删除用户31、添加和删除用户组创建用户组删除用户组 32、修改密码33、使用tar工具进行压缩和解压缩压缩解压缩 34、使用zip u…

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch4 值迭代 与 策略迭代 【动态规划 算法】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、过 电子书 补充 【下载&#xff1a; 本章 PDF 电子书 GitHub】 [又看了一遍视频。原来第一次跳过了好多内容。。。] 3、总体 MOOC 过一遍 习题 学堂在线 课程页面链接 中国大学MOOC 课程页面链…

【宠粉赠书】科技图表绘制:R语言数据可视化

为了回馈粉丝们的厚爱&#xff0c;今天小智给大家送上一套科研绘图的必备书籍——《R语言数据可视化&#xff1a;科技图表绘制》。下面我会详细给大家介绍这套图书&#xff0c;文末留有领取方式。 图书介绍 《R语言数据可视化&#xff1a;科技图表绘制》结合编者多年的数据分析…

jenkins安装和使用 (二)

参考视频资料 https://www.bilibili.com/video/BV1bS4y1471A?p10&vd_sourcee0dcd147bd5d730317de804d788cd6f9 安装maven插件 新建item 配置构建信息 项目地址替换为自己的实际地址 其余保持先保持默认 先然后在主页就看到了这个项目 查看控制台输出 稍等一…

Java 17的新特性

Java 17引入了多项新特性&#xff0c;以下是一些重要的更新&#xff1a; 增强的伪随机数生成器&#xff08;JEP 356&#xff09; Java 17为伪随机数生成器&#xff08;PRNG&#xff09;提供了新的接口类型和实现&#xff0c;包括可跳转的PRNG和另一类可拆分的PRNG算法&#xf…

聊聊 Mybatis 动态 SQL

这篇文章&#xff0c;我们聊聊 Mybatis 动态 SQL &#xff0c;以及我对于编程技巧的几点思考 &#xff0c;希望对大家有所启发。 1 什么是 Mybatis 动态SQL 如果你使用过 JDBC 或其它类似的框架&#xff0c;你应该能理解根据不同条件拼接 SQL 语句有多痛苦&#xff0c;例如拼…

得物面试:什么是零复制?说说 零复制 底层原理?(吊打面试官)

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的零复制的问题&#xff1a; 说一说Rocketmq、是如何实现每秒上百万数据的超…

ACIS采用自底向上的方式创建box

在学习任何CAD几何内核的时候&#xff0c;首先需要学习的是这个几何内核的几何拓扑数据结构&#xff0c;学习完毕后&#xff0c;一个很好的练习是自己采用底层的几何、拓扑构建API&#xff0c;创建一个box。通过这个练习&#xff0c;可以加深初学者对所学几何内核数据结构的理解…

AXI三板斧之Outstanding、Out-of-order、interleaving

1、AXI三板斧之Outstanding 可以不用等单个命令的响应&#xff0c;直接连续发送N个命令&#xff08;N>1&#xff09;&#xff0c;假设Slave端的Outstanding能力为N时&#xff08;N>1&#xff09;&#xff0c;那么Master端可以在Slave不返回读数据的情况下&#xff0c;连…

从小白到大神:算法工程师的核心竞争力养成计划!

从小白到大神&#xff1a;算法工程师的核心竞争力养成计划&#xff01; 我们会发现&#xff0c;本科及研究生所学的知识&#xff0c;比如高等数学、线性代数、传统机器学习方法及深度学习理论等这些&#xff0c;都只是作为算法学习的基础&#xff0c;并不能成为算法工程师的核…

React@16.x(34)动画(中)

目录 3&#xff0c;SwitchTransition3.1&#xff0c;原理3.1.2&#xff0c;key3.1.2&#xff0c;mode 3.2&#xff0c;举例3.3&#xff0c;结合 animate.css 4&#xff0c;TransitionGroup4.1&#xff0c;其他属性4.1.2&#xff0c;appear4.1.2&#xff0c;component4.1.3&…

【Python】对应接口url 被编码后的处理

Python 系列 文章目录 Python 系列前言一、网页链接是什么&#xff1f;二、使用步骤1.解码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 我们在查找网页的开发代码的时候&#xff0c;可能经常查看到接口的链接是&#xff1a; %7B%22funName%22%…

昇思25天学习打卡营第1天|快速入门

一、简介&#xff1a; 本节通过MindSpore已经封装好的API&#xff0c;快速实现一个深度学习模型的数据集准备、训练评估&#xff0c;模型参数保存和加载&#xff0c;对新手朋友十分友好。这里非常感谢华为昇思团队在算力和代码方面的指导。 二、环境准备&#xff1a; 在开始…

YOLOv10改进 | Conv篇 |YOLOv10引入DBB卷积(助力涨点)

1. DBB介绍 1.1 摘要:我们提出了卷积神经网络(ConvNet)的通用构建块来提高性能,而无需任何推理时间成本。 该块被称为多样化分支块(DBB),它通过组合不同尺度和复杂度的不同分支来丰富特征空间,从而增强单个卷积的表示能力,包括卷积序列、多尺度卷积和平均池化。 训练后…

参花实业增收不增利:曾被执行近3000万,资产负债比率高达166%

《港湾商业观察》廖紫雯 日前&#xff0c;参花实业控股有限公司&#xff08;以下简称&#xff1a;参花实业&#xff09;再度递表港交所&#xff0c;保荐机构为中泰国际&#xff0c;参花实业国内运营主体为固安县参花面粉有限公司、廊坊固安县参花企业管理有限公司。 作为一家…

【linux】Valgrind工具集详解(十六):交叉编译、移植到arm(失败)

1、源码下载 官网:https://valgrind.org/ 源码:https://valgrind.org/downloads/current.html 2、配置 ./configure CC=arm-linux-gnueabihf-gcc \CXX=arm-linux-gnueabihf-g++ \AR=arm-linux-gnueabihf-ar \--host=arm-linux-gnueabihf \--pr