首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

函数接受一个数字字符串,并在每个奇数位之前和之后插入一个短划线:例外:字符串不能以'-‘开头或结尾

这个问题可以通过编写一个函数来解决。以下是一个示例的JavaScript函数实现:

代码语言:javascript
复制
function insertDash(str) {
  // 检查字符串是否以'-'开头或结尾
  if (str.startsWith('-') || str.endsWith('-')) {
    return "字符串不能以'-'开头或结尾";
  }

  // 将字符串转换为数组
  let arr = str.split('');

  // 在每个奇数位之前和之后插入短划线
  for (let i = 1; i < arr.length; i += 2) {
    if (parseInt(arr[i]) % 2 !== 0) {
      arr.splice(i, 0, '-');
    }
  }

  // 将数组转换回字符串并返回结果
  return arr.join('');
}

该函数接受一个数字字符串作为参数,并在每个奇数位之前和之后插入一个短划线。如果字符串以'-'开头或结尾,则返回一个错误提示。

以下是该函数的使用示例:

代码语言:javascript
复制
console.log(insertDash('123456'));  // 输出:'1-2-3-4-5-6'
console.log(insertDash('987654'));  // 输出:'9-8-7-6-5-4'
console.log(insertDash('-12345'));  // 输出:'字符串不能以'-'开头或结尾'

这个函数的应用场景可以是在处理数字字符串时需要在奇数位插入短划线的情况,例如电话号码格式化、信用卡号码格式化等。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python基础语法之输入输出、基本数据类型介绍

输入输出 先从输出开始吧,编程语言的学习好像都是从打印Hello World开始的 print()会依次打印每个字符串,遇到逗号“,”会输出一个空格 print()函数输出后默认会换行,print("...标识符有自己的规定: 1、标识符中可以有字母、数字划线,区分大小写。但是不能以数字开头,如:2a = 1 2a这个变量名规范,会报错。...2、标识符不能是python中的关键字保留字,也建议使用python的内置函数的名字,会导致内置函数被覆盖。 注意事项: 以下划线开头的标识符是有特殊意义的。...以双下划线开头的 __foo 代表类的私有成员,以双下划线开头结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。...,该函数没有返回值 image.png insert 在指定的位置插入数据 tuple:原则上数据不可变 1、元组只有1个元素时,要在元素后面加一个逗号,要不然变量类型不是元组: 输入: print(

92220

PEP8-Python代码规范样式编写指南摘录

代码行最大长度换行符应该在二元运算符之前还是之后?空行源文件编码导入模块模块级Dunder名称字符串引号表达式语句中的空白忌讳其他建议什么时候使用结尾逗号?...此时,参数值,参数导入项的列表预计会随着时间扩展。模式是将每个参数值(等)单独放在一行上,始终添加尾随逗号,并在下一行上添加右括号/括号/括号。...第一个单词应大写,除非它是一个以小写字母开头的标识符(请勿更改标识符的大小写!)。 块注释通常由一个多个完整句子组成的段落组成,每个句子以句点结尾。...块注释 块注释通常用于注解位于一些(全部)代码之前,并且缩进到与该代码相同的级别。块注释的每一行都以#一个空格开头(除非注释中的文本是缩进的)。 块注释中的段落由包含单个#的行分隔。...如果您的类打算被子类化,并且您具有希望子类使用的属性,请考虑使用双下划线开头并且没有下划线结尾的样式来命名它们。这将调用Python的名称修改算法,其中将类的名称修改为属性名称。

1.5K10

前端培训二:前端代码规范

对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shadow)。 不要在 rgb()、rgba()、hsl()、hsla() rect() 值的内部的逗号后面插入空格。...【强制】变量 变量名采用小驼峰式命名,首字母小写,每个单词首字母大写,不要在变量中用下划线,名词不要用动词开头, 如: myName。...长字符串不在例外之列。...,第一个属性应当在左括号后的另起一行 每个属性的名值对应当适应不含引号的属性名,其后紧跟一个冒号(之前不含空格),而后是值 倘若属性值是一个函数类型,函数体应当在属性名之下另起一行,而且其前后均应保留一个空行...===会先判断两边的值类型,类型匹配时为false。 操作DOM的时候,尽量减少重绘,有js操作的时候不管是class或者id命名都以js-开头 Post Views: 324

1K20

PHP正则表达式

2 2,将位乘积的个十位全部相加,再加上所有偶数位上的数字 3,将加法和加上校验位能被 10 整除。...• \t匹配一个制表符。等价于 \x09 \cI。 • \v匹配一个垂直制表符。等价于 \x0b \cK。 • \w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。...• \nm标识一个八进制转义值一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。...*/i’,那这个i又是什么呢,这就是模式修正符; i表示在模式进行匹配进区分大小写 m将模式视为多行,使用^$表示任何一行都可以以正则表达式开始结束 s如果没有使用这个模式修正符号,元字符中的...默认不能表示换行符号,将字符串视为单行 x表示模式中的空白忽略不计 e正则表达式必须使用在preg_replace替换字符串函数中时才可以使用(讲这个函数时再说) A以模式字符串开头,相当于元字符

4.5K10

Java 正则表达式:语法讲解常用表达式汇总

matches(): false // 不是整个序列都匹配 lookingAt(): false // 开头匹配 正则表达式语法 在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的...字符 说明 ^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与”\n””\r”之后的位置匹配。 $ 匹配输入字符串结尾的位置。...如果设置了 RegExp 对象的 Multiline 属性,$ 还会与”\n””\r”之前的位置匹配。 * 零次多次匹配前面的字符子表达式。例如,zo* 匹配”z””zoo”。...$ 手机号码 ^(13[0-9] 电话号码 ^((\d{3,4}-) 身份证号(15位、18位数字) ^\d{15} 身份证号码(数字、字母x结尾) ^([0-9]){7,18}(x 帐号是否合法(字母开头...,允许5-16字节,允许字母数字划线) ^ [a-zA-Z][a-zA-Z0-9_]{4,15}$ 密码(以字母开头,长度在6~18之间,只能包含字母、数字划线) ^ [a-zA-Z]\w{5,17

3.8K20

2400字整理Python编码规范,肝了一晚上~

,逗号之后要有空格函数的参数列表中,默认值等号两边不要添加空格左括号之后,右括号之前不要加添加空格参数列表, 索引切片的左括号前不应加空格当'='用于指示关键字参数默认参数值时,不要在其两侧使用空格...12、命名规范Python中的变量名要遵循一定的规则,如果违反,在运行Python的时候就会引发错误,一般要遵循以下原则:变量命名:变量只由小写字母、数字、下划线组成,且不能以数字开头,禁止使用其他字符...= 11 # 不能以数字开头常量:常量命名使用大写字母,下划线分隔。...MAX_COUNT = 10类命名:所有单词首字母大写,多个单词时,每个单词开头字母都要大写,私有类可用一个划线开头。...,私有函数函数前加一个划线

88440

PHP的基本规则

如果类名包含多个单词,每个单词的第一个字母必须大写,连续的大写是不允许的,例如,Zend_PDF是不允许的,而Zend_Pdf是可接受的。...A.2.4  函数方法 函数名只能包含字母和数字字符,但不鼓励使用数字,不允许使用下划线函数名总是以小写字母开头,当函数名包含多个单词时,每个单词的首字母必须大写,这就是所谓的"驼峰"格式。...在对象中的方法,声明为privateprotected的,名称的首字符必须是一个单独的下划线,这是唯一的下划线在方法名字中的用法。声明为public的方法不以下划线开头。...} A.2.5  变量 变量只包含数字字母字符,鼓励使用数字,不允许为下划线。...声明为privateprotected的类成员变量名必须以一个单独的下划线开头,这是唯一的下划线在变量名中的用法。声明为public的变量从不以下划线开头

5.1K50

JavaScript的对象介绍常用内置对象介绍

6) 排序 reverse() 反转数组项的顺序 sort() 1.默认排序:该方法会调用每个数组项的toString() 转型方法,然后排序 2.自定义排序: a.该方法可以接受一个比较函数作为参数...,比较函数有两个参数 b.如果第一个数位于第二个参数之前,返回负数 c.如果第一个数位于第二个参数之后,返回正数 var arr = [11,5,23,7,4,1,9,1]; console.log...//字符串中连着出现4次(或者更多)数字即可 var reg = /\d{4}/; console.log(reg.test(v)); var v = "1111"; //^表示开头 $表示结尾...//开头结尾直接必须连续出现4次数字 var reg = /^\d{4}$/; console.log(reg.test(v)); var v = "1aaa2345"; //开头一个非0...结尾一个数字(一共俩个字符) var reg = /^\w\d$/; console.log(reg.test(v)); var v = "aasd11111"; //开头是字符(1-n个)

1.4K10

python标识符号_python标识符的组成元素

在Python里,标识符由字母、数字、下划线组成,但不能以数字开头。 ps:以下代码可以直接执行 Python 标识符 # Python 中标识符区分大小写。...# # 以双下划线开头的 __foo 代表类的私有成员,以双下划线开头结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。...""" Python 空行 # 函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类函数入口之间也用一行空行分隔,以突出函数入口的开始。...书写时插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能含义的代码,便于日后代码的维护重构。 # 记住:空行也是程序代码的一部分。...# 像if、while、defclass这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行多行代码构成代码组。 # 我们将首行及后面的代码组称为一个子句(clause)。

1.5K20

JavaScript秘密笔记 第三集

***关联数组: 什么是: 可自定义下标名称的数组 vs 索引数组: 下标都为默认的数字的数组 稀疏数组: 下标连续的数组 为什么: 索引数组的数字下标,没有意义,不便于快速查找维护 何时...何时: 今后如果要求转换字符串之后的格式时 固定套路: 1. 将单词数组拼接为句子: words.join(" ") 2....排序算法: 冒泡,插入,快速 冒泡: (默认升序排列) 基本: 从0开始遍历数组中每个元素,不用到头 只要当前元素>下一个元素 就交换两数位置 问题: 一轮遍历,无法完成排序 解决: 需要用外层循环控制多轮遍历...现成的API: arr.sort(); 问题: arr.sort只能对字符串一位数字排序 无法对多位数字类型排序 原因: arr.sort()默认先将每个元素转为字符串,再排序 解决: 自定义比较器函数...结尾封闭,开头出入栈: 入栈: arr.unshift(值) 强调: 开头入栈的顺序结尾入栈的结果相反!

61200

零基础学Python(第三章 基础语法)

我们在第一个章节中学会了【Ctrl+F5】执行程序,接下来我们开始一点点的学习增添程序内容: 2、变量与标识(shí)符(也有读zhì) 在 Python 里,标识符由字母、数字、下划线组成。...在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线开头的标识符是有特殊意义的。...以双下划线开头的 __foo 代表类的私有成员,以双下划线开头结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。...其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。 word = 'word' sentence = "这是一个句子。"...类函数入口之间也用一行空行分隔,以突出函数入口的开始。 空行与代码缩进不同,空行并不是Python语法的一部分。书写时插入空行,Python解释器运行也不会出错。

41120

正则表达式(RegEx)官方手册权威指南【Python】

^ (插入符号) 匹配字符串开头, 并且在 MULTILINE 模式也匹配换行后的首个符号。 $ 匹配字符串尾或者换行符的前一个字符,在 MULTILINE 模式匹配换行符的前一个字符。 ...\A 只匹配字符串开始。 \b 匹配空字符串,但只在单词开始结尾的位置。一个单词被定义为一个单词字符的序列。...如果 LOCALE 标记被设置的话,词的边界是由当前语言区域设置决定的,\b 表示退格字符,以便与Python字符串文本兼容。 \B 匹配空字符串,但 能在词的开头或者结尾。...对于8位(bytes)样式: 匹配ASCII字符中的数字字母划线,就是 [a-zA-Z0-9_] 。如果设置了 LOCALE 标记,就匹配当前语言区域的数字字母划线。...与在字符串字面值中一样,它扩展了命名 Unicode 字符 (例如 '\N{EM DASH}')。 模块内容 模块定义了几个函数,常量,一个例外

5.2K20

C语言笔记---(2)基本语法

(词法扫描语法分析)之前所作的工作。...int 声明整型变量函数 long 声明长整型变量函数返回值类型 register 声明寄存器变量 return 子程序返回语句(可以带参数,也可不带参数) short 声明整形变量函数 signed...*标识符的命名规则 只能由字母、数字、下划线组成 第一个字符必须是字母划线,不能以数字开头 不能是C语言中的关键字 严格区分大小写字母 标识符最好选择有意义的英文单词组成,不要使用拼音。...每个语句必须使用分号结尾,除非由明确规定可以写分号。 int Number = 1; 这就是一个变量声明语句,声明整形变量Number,并给他赋值为1。...(4)输出部分字符串 %s占位符用来输出字符串,默认是全部输出。如果只想输出开头的部分,可以用%.[m]s指定输出的长度,其中[m]代表一个数字,表示所要输出的长度。

87220

Qt正则表达式类QRegExp(附检验小程序)

\w 任意单字字符(字母,数字或者下划线) \W 任意非单字字符 \n 第n个反向引用,例如\ 1,\ 2等。 注意: C ++编译器将反斜杠转换为字符串。...(当插入号是字符集的第一个字符时,它具有特殊含义,请参见字符集。) $ 美元表示字符串结尾。...如 果 您 想 匹 配 文 字 将匹配以数字结尾(可选)后跟空格的字符串。如果您想匹配文字将匹配以数字结尾(可选)后跟空格的字符串。如果您想匹配文字,则必须通过书写将其转义\$。 \b 单词边界。...例如,正则表达式\ bOK \ b表示在单词边界(例如字符串空白的开头之后立即匹配字母“ O”,然后紧接在另一个单词边界(例如字符串空白的结尾之前匹配字母“ K”。...除字符集缩写以下两个例外外,字符在方括号中没有特殊含义。 例子 含义 ^ 如果字符集作为第一个字符出现(即紧接在方括号之后),则插入符将否定该字符集。

6.3K21

C字符串格式化

字符串格式化输出输入 字符串常量 字符串是内存中一段连续的char空间,以'\0'(数字0)结尾。...每个字符串结尾,编译器会自动的添加一个结束标志位'\0',即 "a" 包含两个字符'a'’\0’。...十进制 以正常数字1-9开头,如123 八进制 以数字0开头,如0123 十六进制 以0x开头,如0x123 二进制 C语言不能直接书写二进制数 printf是输出一个字符串,putchar输出一个char...printf格式字符: 打印格式 对应数据类型 含义 %d int 接受整数值并将它表示为有符号的十进制整数 %hd short int 整数 %hu unsigned short 无符号整数 %o...输出字符串中的字符直至字符串中的空字符 (字符串以'\0‘结尾,这个'\0'即空字符) %p void * 以16进制形式输出指针 %% % 输出一个百分号 %d 整形 int %f

1.5K30

正则表达式

"\d"“\D” \d \D 匹配一个数字 匹配一个数字 怎么理解呢?...,hi22,hi333等字符串 接下来再来看一组"\w""\W" \w \W 匹配字母/数字/下划线 匹配除字母/数字/下划线之外的字符 看下下面的例子 hi\w //可以匹配hi1,hia,hi_...表示字符串的结束 废话不多说,直接上例子 ^hi$ //只能匹配hi字符串,使用^限定了只能是h开头,$限定了只能以i结尾,所以只能匹配hi字符串 ^hi //匹配以hi开头的所有字符串,例如:hi.../匹配以小写字母a到z开头,以at结尾的字符,例如:cat,bat等,匹配Cat,Bat,1at等 ^[A-Za-z0-9]at$ //匹配A到Z或者a到z或者0到9的字符开头,at结尾字符串,例如...:cat,Cat,1at等,匹配$at,#at, _at等 方括号“[^]”表示匹配这个集合中任何一个字符 ^[^xyz]at$ //表示匹配以x、y、z开头,以at结尾字符串,例如:匹配xat

14810

Python 基础语法(补充)

Python标识符 在python里,标识符有字母、数字、下划线组成。 在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 python中的标识符是区分大小写的。...以下划线开头的标识符是有特殊意义的。...以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用"from xxx import *"而导入; 以双下划线开头的(__foo)代表类的私有成员;以双下划线开头结尾的...建议你在每个缩进层次使用 单个制表符 两个空格 四个空格 , 切记不能混用 多行语句 Python语句中一般以新行作为为语句的结束符。...书写时插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能含义的代码,便于日后代码的维护重构。 记住:空行也是程序代码的一部分。

88220

python基础知识点(精心整理)_python编程基础知识

在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线开头的标识符是有特殊意义的。...以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入; 以双下划线开头的 __foo 代表类的私有成员;以双下划线开头结尾的...像大多数语言一样,数值类型的赋值计算都是很直观的。 内置的 type() 函数可以用来查询变量所指的对象类型。...String(字符串) Python中的字符串用单引号 ’ 双引号 ” 括起来,同时使用反斜杠 \ 转义特殊字符。...可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

92930

C语言常量与变量-学习三

构造类型的值可以分解成为若干个“成员”“元素”。每个成员都是一个基本数据类型又是一个构造类型。 常量与变量 定义:在程序执行过程中,其值不发生改变的量称为常量,其值可改变的量称为变量。...命名规则: 只能由字母、数字、下划线三种字符组成 且第一个字符必须为字母划线,不能为数字!...类型说明符与变量名之间至少用一个空格间隔。 最后一个变量名之后必须以“;”分号结尾。 变量定义必须放在变量使用之前。 一般放在函数体的开头部分。...十进制小数形式 由数字小数点组成(必须有小数点) 如:.123、123. 、23.01 、0.0 指数形式 数字 + e (E) + 整数,字母e (E)之前必须有数字,且e后面的指数必须为整数...、 “CH I NA” 、“%#8ad72” C语言规定:在每一个字符串结尾一个字符串结束标志“\0”,以便系统据此判断字符串是否结束。

96740

Python的re模块 --- 正则表达式操作

^ (插入符号) 匹配字符串开头, 并且在 MULTILINE 模式也匹配换行后的首个符号。 $ 匹配字符串尾或者换行符的前一个字符,在 MULTILINE 模式匹配换行符的前一个字符。...\A 只匹配字符串开始。 \b 匹配空字符串,但只在单词开始结尾的位置。一个单词被定义为一个单词字符的序列。...如果 LOCALE 标记被设置的话,词的边界是由当前语言区域设置决定的,\b 表示退格字符,以便与Python字符串文本兼容。 \B 匹配空字符串,但  能在词的开头或者结尾。...对于8位(bytes)样式: 匹配ASCII字符中的数字字母划线,就是 [a-zA-Z0-9_] 。如果设置了 LOCALE 标记,就匹配当前语言区域的数字字母划线。...八进制转义包含为一个有限形式。如果首位数字是 0, 或者有三个八进制数位,那么就认为它是八进制转义。其他的情况,就看作是组引用。对于字符串文本,八进制转义最多有三个数位长。

2.3K30
领券