当前位置: 首页 > news >正文

c#中slice,substr,substring区别

1. 都使用一个参数:

//栗子数据
var arr = [1,2,3,4,5,6,7],
str = "helloworld!"; //防止空格干扰,不用带空格的,注意这里有个!号也算一位

console.log(str.slice(1)); //elloworld!
console.log(str.substring(1)); //elloworld!
console.log(str.substr(1)); //elloworld!

console.log(arr.slice(1)); //[2,3,4,5,6,7]
console.log(arr.substr(1)); //TypeError: arr.substr is not a function
console.log(arr.substring(1)); //TypeError: arr.substring is not a function
结论一目了然,都是从指定位置截到结束,而数组是没有substr和substring方法的!!!(初学者谨记!包含str的,当然是字符串专用!)因此后面的内容,数组将不会再使用这两个方法。

2. 都使用两个正数参数(第一个小于第二个):

//栗子不变
console.log(str.slice(1,4)); //ell
console.log(str.substring(1,4)); //ell
console.log(str.substr(1,4)); //ello 不一致了!!!

console.log(arr.slice(1,4)); //[2,3,4]
区别出现了,substr的结果不一致,因为substr的第二参数,是截取几位的意思,而其他两个的是截取到第几位的前面(之所以这么说,是因为不包括这个位置)。数组字符串表现一致。

3. 都使用两个正数参数(第一个大于第二个):

//栗子不变
console.log(str.slice(5,1)); //""
console.log(str.substring(5,1)); //ello
console.log(str.substr(5,1)); //"w"

console.log(arr.slice(5,1)); //[]
区别又出现了,除了slice,其他都有值。也就是说,substring会将此情况的位置自动调换,然后截取出相应的值;substr当然按照原意从第5个位置开始,截取1位返回一个字符;而slice直接返回空,slice的第一参数必须要小于等于第二参数才有效,这是顺序的感觉。

4. 使用一正一负两个参数(第一正,第二负)

//栗子不变
console.log(str.slice(1,-2)); //elloworl
console.log(str.substr(1,-2)); //""
console.log(str.substring(1,-2)); //h

console.log(arr.slice(1,-2)); //[ 2, 3, 4, 5]
可见,slice第二参数为负数时,是从尾部倒数来计算或者说是与字符串或数组的长度相加得出的结果来计算;而substring, 无论第二参数是负多少,都只截取了第一个字符;substr同样,个数不可能是负数,所以是空;总结substring和substr第二参数为负数时其实是无效果的。

5. 使用一正一负两个参数(第一负,第二正)

//栗子不变
console.log(str.slice(-3,1)) //""
console.log(str.substr(-3,1)) //l
console.log(str.substring(-3,1)) //h

console.log(arr.slice(-3,1)) //[]
这里还是一正一负,只不过换了位置,然而结果确不同了。slice结果是空,这个结合第3和第4种情况,可知,这个实际是slice(8,1),第一参数大于第二参数了,所以是无效的,空值;substring,结合第3和第4种情况,是调换了顺序,但是还是负数,依然也是无效的,只返回第一个字符;substr,第一参数负数同样代表从尾部倒数或者字符串的长度相加得出的结果来计算,等同于substr(8,1),截取栗子中的一位,得到了“l”。

6. 全负数(两种情况合一)

//栗子不变
console.log(str.slice(-1,-5));
console.log(str.substr(-1,-5));
console.log(str.substring(-1,-5));

console.log(arr.slice(-1,-5));
//上面的结果全是空

console.log(str.slice(-5,-1)); //orld
console.log(str.substr(-5,-1)); //""
console.log(str.substring(-5,-1)); //""

console.log(arr.slice(-5,-1)); //[ 3, 4, 5, 6 ]
这两种情况合一了,其实这个也多余说了,只不过是为了把情况都列出来而已,因为上述的结果都可以用第1到第5种情况解释完全的,大家自行换算一下就知道了,结论是一样的。由此也提醒,主要是初学者,需要注意的就是负数的情况,因为有时候会突然转不过来弯。

总结一下:

1.  slice,substring,substr 都是用来截取字符串或数组的,然而数组只能使用slice,这三者如果不传参数,则都返回全部内容;

2.  参数为正数时,只有substring会自动调换顺序,slice在第一参数大于第二参数时会无效返回空,而substr无所谓,除非给定的第一参数超出了源数据长度才会返回空;

3. 参数为负数时,只有substring会永远无效,即不要给substring使用负值!slice可认为从尾部倒数,或者直接用源数据长度加上这个负值换算为正数,然后结论依然遵循第2条所述;而substr,则只适用第一参数为负数,换算方法同slice,其第二参数代表截取的个数,是不能为负数的;

相关文章:

c#中slice,substr,substring区别

1. 都使用一个参数: //栗子数据 var arr [1,2,3,4,5,6,7], str "helloworld!"; //防止空格干扰,不用带空格的,注意这里有个!号也算一位 console.log(str.slice(1)); //elloworld! console.log(str.substring(1)); //…...

java语言里redis在项目中使用场景,每个场景的样例代码

Redis是一款高性能的NoSQL数据库,常被用于缓存、消息队列、计数器、分布式锁等场景。以下是50个Redis在项目中使用的场景以及对应的样例代码和详细说明: ##1、缓存:将查询结果缓存在Redis中,下次查询时直接从缓存中获取&#xff…...

Mongo集合操作

2、创建切换数据库 2.1 默认数据库 mongo数据库和其他类型的数据库一样,可以创建数据库,且可以创建多个数据库。 mongo数据库默认会有四个数据库,分别是 admin:主要存储MongoDB的用户、角色等信息 config:主要存储…...

ConvTranspose2d 的简单例子理解

文章目录 参考基础概念output_padding 简单例子: stride2step1step2step3 参考 逆卷积的详细解释ConvTranspose2d(fractionally-strided convolutions)nn.ConvTranspose2d的参数output_padding的作用torch.nn.ConvTranspose2d Explained 基础概念 逆卷…...

酒精和肠内外健康:有帮助还是有害?

谷禾健康 酒精与健康 饮酒作为一种特殊的文化形式,在我们国家有其独特的地位,在几千年的发展中,酒几乎渗透到日常生活、社会经济、文化活动之中。 据2018年发表的《中国饮酒人群适量饮酒状况》白皮书数据显示,中国饮酒人群高达6亿…...

SylixOS Shell下操作环境变量方法

系统启动后会在内核中生成一份默认的环境变量,环境变量名和默认值由源程序决定。系统启动后如果文件系统中存在有效的/etc/profile文件,则还会自动读取文件中的内容,并导入到Shell环境中,覆盖对应变量或增加新的变量。程序运行时&…...

【dfs解决分组问题-两道例题——供佬学会!】(A元素是放在已经存在的组别中,还是再创建一个更好?--小孩子才做选择,dfs直接两种情况都试试)

问题关键就是: 一个点,可能 新开一个组 比 放到已经存在的组 更划算 因为后面的数据,我们遍历之前的点时,并不知道 所以我们应该针对每个点,都应该做出一个选择就是 新开一个元组或者放到之前的元组中,都尝…...

使用Hexo在Github上搭建个人博客

使用Hexo在Github上搭建个人博客 1. 安装Node和git2. 安装Hexo3. Git与Github的准备工作4. 将Hexo部署到Github5. 开始写作 1. 安装Node和git 在Mac上安装Node.js可以使用Homebrew,使用以下命令安装: brew install node使用以下命令安装Git: …...

【面试题】面试官:说说你对 CSS 盒模型的理解

前言 CSS 盒模型是 CSS 基础的重点难点&#xff0c;因此常被面试官们拿来考察候选人对前端基础的掌握程度&#xff0c;这篇文章将对 CSS 盒模型知识点进行全面的梳理。 我们先看个例子&#xff1a;下面的 div 元素的总宽度是多少呢&#xff1f; js <!DOCTYPE html> &…...

【ROS2】学习笔记

1. 基础概念 1.1 执行单元 1.1.1 executable——执行程序 executable表示针对某个目标的程序执行流程&#xff0c;一个executable可以启动多个node&#xff1b; 1.1.2 node——“进程” node其实就是进程的意思&#xff1b; ROS2允许同时启动两个相同的node&#xff0c;&a…...

Springboot +Flowable,流程表单应用之外置表单(JSON形式)(二)

一.简介 整体上来说&#xff0c;我们可以将Flowable 的表单分为三种不同的类型&#xff1a; 动态表单 这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息&#xff0c;不过不能定义完整的表单页面。外置表单 外置表单我们只需要定义一下表单的 k…...

JavaScript如何使用if语句

JavaScript的if语句可以让我们根据某些条件来执行不同的代码块。使用if语句的基本思路是将要执行的代码放在括号内&#xff0c;并使用if关键字进行匹配。下面是一些例子&#xff1a; 简单的if语句&#xff1a; let age 18; if (age > 18) { console.log("You are…...

XSS攻击以及java应对措施

文章目录 一. XSS攻击介绍1. 前端安全2. xss攻击简介3. xss的攻击方式 二. java应对xss攻击的解决方案1. 强制修改html敏感标签内容2. 利用过滤器过滤非法html标签 一. XSS攻击介绍 1. 前端安全 随着互联网的高速发展&#xff0c;信息安全问题已经成为企业最为关注的焦点之一…...

yolo 训练

这里写目录标题 分配训练集&Validation数量数据集读取读取全部文件夹替换路径 loss weightNMSBBox_IOUEIou Optimizer 分配训练集&Validation数量 validation_size training_size * validation_ratio / (1 - validation_ratio)training_size 219 validation_ratio …...

谷歌chrome浏览器升级新版后字体显示不清楚解决方案

谷歌chrome浏览器升级新版后字体显示不清楚解决方案 参考图片&#xff1a; Chrome更新至版本Chrome 109.0.5414.120 字体看不清 浏览器症状与表现 Chrome更新至版本Chrome 109.0.5414.120 字体看不清&#xff1b;会很细&#xff0c;在设置中选择自定义的字体&#xff0c;仍无法…...

在外包干了三年,我废了……不吹不黑!

没错&#xff0c;我也干过外包&#xff0c;一干就是三年&#xff0c;三年后&#xff0c;我废了…… 虽说废的不是很彻底&#xff0c;但那三年我几乎是出差了三年、玩了三年、荒废了三年&#xff0c;那三年&#xff0c;我的技术能力几乎是零成长的。 说起这段三年的外包经历&a…...

【Vue】学习笔记-消息的订阅与发布

消息的订阅与发布(基本不用) 消息订阅与发布(pubsub)消息订阅与发布是一种组件间的通信的方式&#xff0c;适用于任意组件间通信 消息订阅与发布 1.订阅消息∶消息名 2.发布消息︰消息内容 消息订阅与发布的工作流程&#xff1a; &#xff08;A是订阅者&#xff0c;B是发布…...

大疆无人机 MobileSDK(遥控器/手机端)开发 v5版<1>

文章目录 概要整体架构流程技术细节SDK 架构体系概述层级架构智能任务空白项目集成 MSDK新建空白项目新建 MyApplication.kt 文件修改 build.gradle(Module) 文件修改 AndroidManifest.xml 文件修改 MainActivity.kt 文件导入 UXSDK 开源框架4.X 和 5.X 版本差异说明DJIKey差异…...

azkaban介绍

目录 为什么需要工作流调度系统 什么是azkaban azkaban适用场景 azkaban特点 常见的工作流调度系统 azkaban和Ooize特性对比 azkaban的架构 azkaban调度的任务有可能有那些类型 总结 为什么需要工作流调度系统 一个完整的大数据分析系统&#xff0c;必然由很多任务单…...

自学黑客(网络安全)必学内容

随着时代的发展&#xff0c;经济、社会、生产、生活越来越依赖网络。而随着万物互联的物联网技术的兴起&#xff0c;线上线下已经打通&#xff0c;虚拟世界和现实世界的边界正变得模糊。这使得来自网络空间的攻击能够穿透虚拟世界的边界&#xff0c;直接影响现实世界的安全。 …...

多模型场景下的成本治理指标体系幢

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode&#xff0c;现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力&#xff0c;让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中&#xff0c;我们遇到了一个很现实的问…...

CentOS 7.9源码编译glibc 2.28:从“cannot find -lnss_test2”报错到成功部署的实战复盘

1. 问题背景与复现 最近在CentOS 7.9系统上源码编译glibc 2.28时&#xff0c;遇到了一个让人头疼的报错&#xff1a;/usr/bin/ld: cannot find -lnss_test2。这个错误发生在编译的最后阶段&#xff0c;直接导致安装失败。作为一个长期和Linux系统打交道的老手&#xff0c;我决定…...

5个核心优势深度解析:ReadCat开源小说阅读器如何重塑数字阅读体验

5个核心优势深度解析&#xff1a;ReadCat开源小说阅读器如何重塑数字阅读体验 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 在数字阅读日益普及的今天&#xff0c;读者们面临着广告…...

GitHub中文界面插件终极指南:3分钟实现全平台中文化

GitHub中文界面插件终极指南&#xff1a;3分钟实现全平台中文化 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾被GitHub满屏…...

用Shapely给你的数据加点‘空间感’:非GIS背景也能上手的Python地理分析入门

用Shapely给你的数据加点‘空间感’&#xff1a;非GIS背景也能上手的Python地理分析入门 想象一下&#xff0c;你手里有一份包含全国星巴克门店位置的数据集。传统的分析方法可能告诉你每家店的营业额、客流量&#xff0c;但如果能回答"哪些门店位于地铁站500米范围内&quo…...

转行AI Agent的真实成本:时间、金钱与精力

建议按照我下面的办法来做&#xff0c;不一定能让你成为LLM专家&#xff0c;但一定能帮你快速入门&#xff0c;少走弯路。 1.先把模型“用顺”一上来别纠结框架、工程化这些&#xff0c;第一件事是能稳定调用一个模型&#xff0c;让它按你想要的格式输出结果。很多人卡在这里&a…...

Qwen3.5-9B多场景落地:跨境电商独立站多语言FAQ自动生成与更新

Qwen3.5-9B多场景落地&#xff1a;跨境电商独立站多语言FAQ自动生成与更新 1. 项目背景与价值 跨境电商独立站运营面临的最大挑战之一&#xff0c;就是需要为不同语言市场的客户提供及时、准确的常见问题解答&#xff08;FAQ&#xff09;。传统人工编写和维护多语言FAQ存在三…...

工业自动化必备:C#+Modbus TCP控制伺服电机保姆级教程

工业自动化实战&#xff1a;C#与Modbus TCP协议在伺服电机控制中的深度应用 在智能制造浪潮席卷全球的今天&#xff0c;工业自动化技术正以前所未有的速度重塑着生产流程。作为自动化系统的核心执行部件&#xff0c;伺服电机凭借其高精度、快速响应的特性&#xff0c;已成为现代…...

这 12 个神级免费工具,我用了才知道白白多花了好几年冤枉钱!

&#x1f6e0;️这 12 个神级免费工具&#xff0c;我用了才知道白白多花了好几年冤枉钱&#xff01;AI写作 / 视频剪辑 / 图片处理 / 效率提升全部免费可用&#xff0c;链接直接点&#xff0c;手机电脑都支持阅读约 6 分钟 强烈建议收藏转发很多人不知道&#xff1a;那些动辄几…...

解锁Windows无限可能:Windhawk模块化定制完全指南

解锁Windows无限可能&#xff1a;Windhawk模块化定制完全指南 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 你是否曾对Windows系统一成不变的界面感到…...