# 文档
这是一个通用的 JS 工具类库,包含如下功能请见👇
---
# CommonUtil 常用工具类
[phoneIsValid 检查手机号是否合法](#1-phoneIsValid)
[maskPhone 对手机号进行脱敏处理](#2-maskPhone)
[idcardIsValid 检查身份证是否合法](#3-idcardIsValid)
[maskIDCard 对身份证进行脱敏处理](#4-maskIDCard)
[mask 通用脱敏方法](#5-mask)
[maskName 对姓名脱敏](#6-maskName)
[maskEMail 对电子邮箱脱敏](#7-maskemail)
# NumberUtil 数字工具类
[isInteger 是否为整数](#1-isInteger)
[isFloat 是否为小数](#2-isFloat)
[inRange 是否在范围内](#3-inRange)
[random 随机数](#4-random)
# ArrayUtil 数组工具类
[chunk 数组分块](#1-chunk)
[slice 数组切片](#2-slice)
[group 对象数组分组](#3-group)
# DateUtil 日期工具类
[parseDate 将 字符串/时间戳 解析成日期对象](#1-parseDate)
[formatDate 将日期格式化成指定格式的字符串](#2-formatDate)
[formatDateToFriendly 日期格式化成友好格式](#3-formatDateToFriendly)
[timestamp 获取时间戳](#4-timestamp)
[dateBefore 日期向前偏移](#5-dateBefore)
[dateAfter 日期向后偏移](#6-dateAfter)
[isLeapYear 判断是否闰年](#7-isLeapYear)
[getDaysInMonth 给定的月份有多少天](#8-getDaysInMonth)
[getDateStart 获取日期指定时间维度的开头](#9-getDataStart)
[getDateEnd 获取日期指定时间维度的结尾](#10-getDateEnd)
[getDayCountOfYear 获取给定日期所在当年总共有多少天](#11-getDayCountOfYear)
[getDayIndexOfYear 获取给定日期在当年的第几天](#12-getDayIndexOfYear)
[getWeekIndexOfYear 获取给定日期在当年的第几周](#13-getWeekIndexOfYear)
[getWeekIndexOfMonth 获取给定日期在当月的第几周](#14-getWeekIndexOfMonth)
[getDateDiff 计算两个日期的差](#15-getDateDiff)
# StringUtil 字符串工具类
[isEmpty 判断字符串是否为空](#1-isEmpty)
[isNotEmpty 判断字符串是否不为空](#2-isNotEmpty)
[trim 将字符串去除空格](#3-trim)
[startsWith 判断字符串是否以某个字符串开头](#4-startsWith)
[endsWith 判断字符串是否以某个字符串结束](#5-endsWith)
[contains 判断字符串是否包含某个字符串](#6-contains)
[equals 判断两个字符串是否相等](#7-equals)
[equalsIgnoreCase 忽略大小写判断两个字符串是否相等](#8-equalsIgnoreCase)
[containsWhitespace 判断字符串是否含有空格](#9-containsWhitespace)
[repeat 按指定数量生成给定字符串字符](#10-repeat)
[deleteWhitespace 去除字符串中的空格](#11-deleteWhitespace)
[rightPad 将给定字符串进行右侧填充](#12-rightPad)
[leftPad 将给定字符串进行左侧填充](#13-leftPad)
[capitalize 将字符串首字母转大写](#14-capitalize)
[unCapitalize 将字符串首字母转小写](#15-unCapitalize)
[swapCase 将字符串中的字母大写转小写,小写转大写](#16-swapCase)
[countMatches 统计含有的子字符串的个数](#17-countMatches)
[isAlpha 判断字符串是否为字母](#18-isAlpha)
[isAlphaSpace 判断字符串是否为字母、空格](#19-isAlphaSpace)
[isAlphanumeric 判断字符串是否为字母、数字](#20-isAlphanumeric)
[isAlphanumericSpace 判断字符串是否为字母、数字、空格](#21-isAlphanumericSpace)
[isNumeric 判断字符串是否为数字](#22-isNumeric)
[isDecimal 判断字符串是否为小数](#23-isDecimal)
[isNegativeDecimal 判断字符串是否为负小数](#24-isNegativeDecimal)
[isPositiveDecimal 判断字符串是否为正小数](#25-isPositiveDecimal)
[isInteger 判断字符串是否为整数](#26-isInteger)
[isPositiveInteger 判断字符串是否为正整数](#27-isPositiveInteger)
[isNegativeInteger 判断字符串是否为负整数](#28-isNegativeInteger)
[isNumericSpace 判断字符串是否为数字、空格](#29-isNumericSpace)
[isWhitespace 判断字符串是否为空格](#30-isWhitespace)
[isAllLowerCase 判断字符串是否为小写字母](#31-isAllLowerCase)
[isAllUpperCase 判断字符串是否为大写字母](#32-isAllUpperCase)
[defaultIfEmpty 如果字符串为空则使用默认字符串, 否则不变](#33-defaultIfEmpty)
[reverse 字符串反转](#34-reverse)
[removeSpecialCharacter 删掉特殊字符(英文状态下)](#35-removeSpecialCharacter)
[isSpecialCharacterAlphanumeric 只包含特殊字符、数字和字母(不包括空格,若想包括空格,改为[ -~])](#36-isSpecialCharacterAlphanumeric)
[format 消息格式化后的字符串](#37-format)
[isChinese 中文校验](#38-isChinese)
[removeChinese 去掉中文字符](#39-removeChinese)
[escapeMetacharacter 转义元字符](#40-escapeMetacharacter)
[escapeMetacharacterOfStr 转义字符串中的元字符](#41-escapeMetacharacterOfStr)
[camelize 将中划线分隔形式的字符串转换为驼峰式的字符串](#42-camelize)
[hyphenate 将驼峰式的字符串转换为中划线分隔形式的字符串](#43-hyphenate)
---
### 1. isInteger()
* 方法签名
**isInteger(num: number)**
* 方法详细介绍
**判断是否为整数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| num | Number | 是 | 无 | 判断对象 |
* 返回值
**true是整数/false不是整数**
* 举个例子
```js
isInteger(0)
// => true
isInteger(0.1)
// => false
isInteger(Math.PI)
// => false
isInteger('10')
// => false
isInteger(true)
// => false
```
> 特别说明:只有 `num` 是数字并且是整数时,才返回 `true`;其他情况都返回 `false`。
### 2. isFloat()
* 方法签名
**isFloat(num: number)**
* 方法详细介绍
**判断是否为小数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| num | Number | 是 | 无 | 判断对象 |
* 返回值
**true是小数/false不是小数**
* 举个例子
```js
isFloat(0)
// => false
isFloat(3)
// => false
isFloat(0.1)
// => true
isFloat(3.3)
// => true
isFloat(Math.PI)
// => true
// 注:Math.PI 在计算机中是有理数
```
> 特别说明:`1.0` 被认为是整数,而不是小数
### 3. inRange()
* 方法签名
**inRange(num: number, start: number, end: number)**
* 方法详细介绍
**检查数字是否在指定区间内**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| num | Number | 是 | 无 | 判断对象 |
| start | Number | 否 | 0 | 区间的开始 |
| end | Number | 是 | 无 | 区间的结束 |
* 返回值
**true/false**
* 举个例子
```js
inRange(3, 2, 4)
// => true
inRange(4, 8)
// => inRange(4, 0, 8) => true
inRange(5.2, 4)
// => false
inRange(-3, -2, -6)
// => true
```
> 特别说明:`end` 参数不包含在区间中
### 4. random()
* 方法签名
**random(lower: number, upper: number, floating: number = 0)**
* 方法详细介绍
**生成随机数,支持随机整数和随机小数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| lower | Number | 是 | 无 | 下边界,默认0 |
| upper | Number | 是 | 无 | 上边界,默认1 |
| floating | Number | 否 | 0 | 随机小数的位数,默认0 |
* 返回值
**随机数**
* 举个例子
```js
random(0, 5)
// => an integer between 0 and 5
random(5)
// => also random(0, 5)
random(1.2, 5.2)
// => a floating-point number between 1.2 and 5.2
random(1.2, 5.2, 1)
// => 返回的随机数只有一位小数
```
> 特别说明:无
---
### 1. phoneIsValid()
* 方法签名
**phoneIsValid(phone: string)**
* 方法详细介绍
**检查手机号是否合法**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| phone | String | 是 | 无 | 手机号 |
* 返回值
**true有效/false无效**
* 举个例子
```js
phoneIsValid(null)
// => false
phoneIsValid('123')
// => false
phoneIsValid('12345678901')
// => true
```
> 特别说明:无
### 2. maskPhone()
* 方法签名
**maskPhone(phone: string, start: number = 3, len: number = 4)**
* 方法详细介绍
**对手机号进行去敏处理,用*替换**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| phone | String | 是 | 无 | 手机号 |
| start | Number | 否 | 3 | 开始位置,从0开始 |
| len | Number | 否 | 4 | 掩码长度 |
* 返回值
**脱敏手机号**
* 举个例子
```js
maskPhone('13641601234')
// => '136****1234'
maskPhone('1234')
// => '1234'
maskPhone('13641601234', 3, 8)
// => '136********'
```
> 特别说明:无
### 3. idcardIsValid()
* 方法签名
**idcardIsValid(idcard: string)**
* 方法详细介绍
**检查身份证是否合法**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| idcard | String | 是 | 无 | 身份证号 |
* 返回值 `Boolean`
**true有效/false无效**
* 举个例子
```js
idcardIsValid('110410199001011234')
// => false
idcardIsValid('410482199001080000')
// => true
```
> 特别说明: 目前进支持18位的二代身份证
### 4. maskIDCard()
* 方法签名
**maskIDCard(idcard: string, start: number = 6, len: number = 8)**
* 方法详细介绍
**对身份证进行去敏处理,用\*替换**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| idcard | String | 是 | 无 | 身份证 |
| start | Number | 否 | 6 | 开始位置,从0开始 |
| len | Number | 否 | 8 | 掩码长度 |
* 返回值
**脱敏身份证**
* 举个例子
```js
maskIDCard('110410199001011234')
// => '110410********1234'
maskIDCard('110410199001011234', 6, 10)
// => '110410**********34'
```
> 特别说明:无
### 5. mask()
* 方法签名
**mask(text: string, start: number, end: number, len: number)**
* 方法详细介绍
**对字符串进行去敏处理,用\*替换**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| text | String | 是 | 无 | 原始字符串 |
| start | Number | 是 | 无 | 开头显示明文字符数(必须>=0) |
| end | Number | 是 | 无 | 结尾显示明文字符数(必须>=0) |
| len | Number | 否 | 无 | 掩码字符长度,如果不传,则根据原始字符串长度计算剩余字符个数(必须>=0) |
* 返回值
**脱敏字符串**
* 举个例子
```js
mask('123456', 2, 3) // 前2后3,剩余字符用*代替
// => '12*456'
mask('123456', 2, 3, 4) // 前2后3,中间显示4个*
// => '12****456'
```
> 特别说明:无
### 6. maskName()
* 方法签名
**maskName(name: string)**
* 方法详细介绍
**对姓名进行去敏处理,用\*替换**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| name | String | 是 | 无 | 姓名 |
* 返回值
**脱敏字符串**
* 举个例子
```js
maskName('李')
// => '李'
maskName('张三')
// => '张*'
maskName('张三丰')
// => '张*丰'
maskName('蒙奇D路飞')
// => '蒙*飞'
```
> 特别说明:
>
### 7. maskEMail()
* 方法签名
**maskEMail(email: string)**
* 方法详细介绍
**对电子邮箱进行去敏处理,用\*替换**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| email | String | 是 | 无 | 电子邮箱 |
* 返回值
**脱敏字符串**
* 举个例子
```js
maskEMail('123456@jz-ins.cn')
// => '12***56@jz-ins.cn'
maskEMail('123@jz-ins.cn')
// => '12***23@jz-ins.cn'
```
> 特别说明:
> 邮箱中的名字部分会采用 `mask(2, 2, 3)` 的方式进行去敏
---
### 1. chunk()
* 方法签名
**chunk(array: any[], size: number = 1)**
* 方法详细介绍
**对目标数组进行分块,每块size个元素**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| array | Array | 是 | 无 | 数组 |
| size | Number | 否 | 1 | 块大小 |
* 返回值
**分块之后的数组**
* 举个例子
```js
chunk(['a', 'b', 'c', 'd'], 2)
// => [['a', 'b'], ['c', 'd']]
chunk(['a', 'b', 'c', 'd'], 3)
// => [['a', 'b', 'c'], ['d']]
```
> 特别说明:无
### 2. slice()
* 方法签名
**slice(array: any[], start: number = 0, end: number)**
* 方法详细介绍
**数组切片**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| array | Array | 是 | 无 | 数组 |
| start | Number | 否 | 0 | 开始 |
| end | Number | 否 | 0 | 结束 |
* 返回值
**切片**
* 举个例子
```js
slice([1, 2, 3, 4])
// => [1, 2, 3, 4]
slice([1, 2, 3, 4], 1)
// => [2, 3, 4]
slice([1, 2, 3, 4], 1, 3)
// => [2, 3]
slice([1, 2, 3, 4], -1)
// => [4]
slice([1, 2, 3, 4], -3, -1)
// => [2, 3]
```
> 特别说明:无
### 3. group()
* 方法签名
**group(array: any[], by: string)**
* 方法详细介绍
**分组,将对象属性相同的对象分为一组**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| array | Array | 是 | 无 | 数组 |
| by | String | 是 | 无 | 属性名 |
* 返回值
**分组之后的数组**
* 举个例子
```js
group([{a:1,b:2,c:3}, {a:1,b:3}, {a:2, b:3, c:2}], 'a')
// => [[{a:1, b:2, c:3}, {a:1, b:3}], [{a:2, b:3, c:2}]]
group([{a:1,b:2,c:3}, {a:1,b:3}, {a:2, b:3, c:2}], 'b')
// => [[{a:1, b:2, c:3}], [{a:1, b:3}, {a:2, b:3, c:2}]]
group([{a:1,b:2,c:3}, {a:1,b:3}, {a:2, b:3, c:2}], 'c')
// => [[{a:1, b:2, c:3}], [{a:1, b:3}], [{a:2, b:3, c:2}]]
```
> 特别说明:无
---
### 1. parseDate()
* 方法签名
**parseDate(date: Date | string | number, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**将 字符串/时间戳 解析成日期对象**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:---|:----|:-----:|:------:|:---|
| date | Date, String, Number | 是 | 无 | 日期字符串,如'2014-09-13',或者时间戳,如`1546272000000`|
| format | String | 否 | 'yyyy-MM-dd' | 支持格式:y、M、d、H、m、s、S|
* 返回值 `Date`
**解析后的Date对象**
* 举个例子
```js
parseDate('2018-11-26')
// => new Date(2018, 10, 26)
parseDate('11/26/2018', 'MM/dd/yyyy')
// => new Date(2018, 10, 26)
parseDate('2018-11-26 13:28:43', 'yyyy-MM-dd HH:mm:ss')
// => new Date(2018, 10, 26, 13, 28, 43)
parseDate('2018年11月26日', 'yyyy年MM月dd日')
// => new Date(2018, 10, 26)
parseDate('2018年11月26日 11时40分', 'yyyy年MM月dd日 HH时mm分')
// => new Date(2018, 10, 26, 11, 40)
parseDate(1546272000000)
// => new Date(2019, 0, 1)
```
> 特殊说明:如果传入的 date 参数不符合要求的类型,则抛出 `TypeError` 错误
### 2. formatDate()
* 方法签名
**formatDate(date: Date | number = new Date(), format: string = 'yyyy-MM-dd HH:mm:ss')**
* 方法详细介绍
**将日期格式化成指定格式的字符串**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, Number | 否 | new Date() | 要格式化的日期,默认当前时间,也可以是一个时间戳 |
| format | String | 否 | 'yyyy-MM-dd HH:mm:ss' | 支持的格式:y,M,d,q,w,H,h,m,S,默认:'yyyy-MM-dd HH:mm:ss' |
* 返回值 `String`
**格式化后的日期字符串**
* 举个例子
```js
formatDate()
// => 2016-09-02 13:17:13
formatDate(new Date(), 'yyyy-MM-dd')
// => 2016-09-02
formatDate(new Date(), 'yyyy-MM-dd 第q季度 www HH:mm:ss:SSS')
// => 2016-09-02 第3季度 星期五 13:19:15:792
formatDate(1472793615764)
// => 2016-09-02 13:20:15
```
> 特殊说明: `date` 参数类型不合法时,返回字符串 'invalid date'
### 3. formatDateToFriendly()
* 方法签名
**formatDateToFriendly(date: Date | number = new Date())**
* 方法详细介绍
**将一个日期格式化成友好格式,比如,1分钟以内的返回“刚刚”,当天的返回时分,当年的返回月日,否则,返回年月日**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, Number | 否 | new Date() | 要格式化的日期,默认当前时间,支持时间戳 |
* 返回值 `String`
**解析后的友好化日期格式**
* 举个例子
```js
// 假设当前时间为 2019-03-18 18:00:00
formatDateToFriendly()
// => 刚刚
formatDateToFriendly(new Date())
// => 刚刚
formatDateToFriendly(new Date(2019,2,18))
// => 00:00
formatDateToFriendly(new Date(2019,1,18))
// => 2月18日
formatDateToFriendly(new Date(2018,1,18))
// => 2018年2月18
```
> 特殊说明: 无
### 4. timestamp()
* 方法签名
**timestamp(date: Date | string = new Date(), format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取日期对应的时间戳**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String | 否 | new Date() | 日期对象/日期字符串,默认当前时间 |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板(date参数为字符串时有效) |
* 返回值 `Number`
**时间戳(单位:毫秒)**
* 举个例子
```js
timestamp()
// => 获取当前时间的时间戳
timestamp(new Date(2018, 0, 1))
// => 2018年1月1日的时间戳
timestamp('2018-01-01', 'yyyy-MM-dd')
// => 2018年1月1日的时间戳
timestamp([])
// => -1
```
> 特殊说明: 如果 `date` 参数不合法,则返回-1
### 5. dateBefore()
* 方法签名
**dateBefore(date: Date | string | number, diff: IDateDiff, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**计算指定日期往前偏移指定时间**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 是 | 无 | 初始日期,支持 Date 对象、日期字符串(需配合format参数)、时间戳 |
| diff | IDateDiff | 是 | 无 | 日期差值,支持year、month、week、day、hour、minute、second、millsecond |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板(date参数为字符串时有效) |
* 返回值 `Date`
**偏移后的日期**
* 举个例子
```js
dateBefore(new Date(2017, 11, 10), { year: 3 })
// => new Date(2014, 11, 10)
dateBefore(new Date(2016, 1, 29), { year: 1 })
// => new Date(2015, 1, 28)
dateBefore(new Date(2016, 2, 31), { month: 1 })
// => new Date(2016, 1, 29)
dateBefore(new Date(2016, 0, 1), { day: 1 })
// => new Date(2015, 11, 31)
dateBefore(new Date(2016, 2, 31), { month: 1, day: 1 })
// => new Date(2016, 1, 29)
// 注意: 这里的结果不是 new Date(2016, 1, 28),因为先计算 day ,后计算 month
dateBefore('2016年3月31日', { month: 1, day: 1 }, 'yyyy年M月dd日')
// => new Date(2016, 1, 29)
```
> 特殊说明:
> 1. `IDataDiff` 接口类型的参数可传入js的对象,比如 `{year:1,day:3}` 表示1年零3天
> 2. 如果 `diff` 参数采用混合模式(同时包含年月日),则会先计算最小单位。
> 比如,2015年12月30日 加上 2个月零1天,先计算最小单位会得到 2016年2月29日;先计算最大单位会得到 2016年3月1日。
> 参考:https://www.timeanddate.com/date/dateadded.html?m1=12&d1=30&y1=2015&type=add&ay=&am=02&aw=&ad=01&rec=
### 6. dateAfter()
* 方法签名
**dateAfter(date: Date | string | number, diff: IDateDiff, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**计算指定日期往后偏移指定时间**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 是 | 无 | 初始日期,支持 Date 对象、日期字符串(需配合format参数)、时间戳 |
| diff | IDateDiff | 是 | 无 | 日期差值,支持year、month、week、day、hour、minute、second、millsecond |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板(date参数为字符串时有效) |
* 返回值 `Date`
**偏移后的日期**
* 举个例子
```js
dateAfter(new Date(2014, 11, 10), { year: 3 })
// => new Date(2017, 11, 10)
dateAfter(new Date(2016, 1, 29), { year: 1 })
// => new Date(2017, 1, 28)
dateAfter(new Date(2016, 2, 31), { month: 1 })
// => new Date(2016, 3, 30)
dateAfter(new Date(2015, 11, 31), { day: 1 })
// => new Date(2016, 0, 1)
dateAfter(new Date(2015, 11, 30), { month: 2, day: 1 })
// => new Date(2016, 1, 29)
dateAfter('2015年12月30日', { month: 2, day: 1 }, 'yyyy年M月dd日')
// => new Date(2016, 1, 29)
```
> 特殊说明:
> 1. `IDataDiff` 接口类型的参数可传入js的对象,比如 `{year:1,day:3}` 表示1年零3天
> 2. 如果 `diff` 参数采用混合模式(同时包含年月日),则会先计算最小单位。
> 比如,2015年12月30日 加上 2个月零1天,先计算最小单位会得到 2016年2月29日;先计算最大单位会得到 2016年3月1日。
> 参考:https://www.timeanddate.com/date/dateadded.html?m1=12&d1=30&y1=2015&type=add&ay=&am=02&aw=&ad=01&rec=
### 7. isLeapYear()
* 方法签名
**isLeapYear(year: number)**
* 方法详细介绍
**判断是否为闰年**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| year | Number | 是 | 无 | 4位数的年份 |
* 返回值 `Boolean`
**是否为闰年**
* 举个例子
```js
isLeapYear(1900)
// => false
isLeapYear(2000)
// => true
isLeapYear(2001)
// => false
isLeapYear(2004)
// => true
```
> 特殊说明: 无
### 8. getDaysInMonth()
* 方法签名
**getDaysInMonth(year: number, month: number)**
* 方法详细介绍
**计算在给定的年份中,给定的月份有多少天(会自动判断是否为闰年)**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| year | Number | 是 | 无 | 4位数的年份 |
| month | Number | 是 | 无 | 月份(0-11) |
* 返回值 `Number`
**当月的天数**
* 举个例子
```js
getDaysInMonth(2019, 2)
// => 31
getDaysInMonth(2019, 1)
// => 28
getDaysInMonth(2016, 1)
// => 29
```
> 特殊说明: 月份从0开始
### 9. getDateStart()
* 方法签名
**getDateStart(date: Date | string | number, mode: TimeDimension, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取日期指定时间维度的开头**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 是 | 无 | 日期 |
| mode | TimeDimension | 是 | 无 | 时间维度,可以使用 `0:Year` `1:Month` `2:Week` `3:Day` `4:Hour` `5:Minute` `6:Second` |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date`参数为字符串时有效 |
* 返回值 `Date`
**开始日期**
* 举个例子
```js
getDateStart(new Date(2018, 2, 3), 0)
// => new Date(2018, 0, 1) 年初
getDateStart(new Date(2018, 2, 3), 1)
// => new Date(2018, 2, 1) 月初
getDateStart(new Date(2018, 2, 3, 10, 20), 3)
// => new Date(2018, 2, 3) 当天凌晨
```
> 特殊说明:无
### 10. getDateEnd()
* 方法签名
**getDateEnd(date: Date | string | number, mode: TimeDimension, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取日期指定时间维度的结尾**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 是 | 无 | 日期 |
| mode | TimeDimension | 是 | 无 | 时间维度,可以使用 `0:Year` `1:Month` `2:Week` `3:Day` `4:Hour` `5:Minute` `6:Second` |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date`参数为字符串时有效 |
* 返回值 `Date`
**结尾日期**
* 举个例子
```js
getDateEnd(new Date(2018, 2, 3), 0)
// => new Date(2018, 11, 31, 23, 59, 59, 999) 年末
getDateEnd(new Date(2018, 2, 3), 1)
// => new Date(2018, 2, 31, 23, 59, 59, 999) 月末
getDateEnd(new Date(2018, 2, 3, 10, 20), 3)
// => new Date(2018, 2, 3, 23, 59, 59, 999) 当天凌晨
```
> 特殊说明:无
### 11. getDayCountOfYear()
* 方法签名
**getDayCountOfYear(date: Date | string | number, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取给定日期所在当年总共有多少天**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 否 | new Date() | 日期对象/日期字符串/时间戳 |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date`参数为字符串时有效 |
* 返回值 `Number`
**当年的总天数**
* 举个例子
```js
getDayOfYear('2018-11-26')
// => 365
getDayOfYear('12/20/2019', 'MM/dd/yyyy')
// => 365
getDayOfYear('2020-12-20')
// => 366
```
> 特殊说明:无
### 12. getDayIndexOfYear()
* 方法签名
**getDayIndexOfYear(date: Date | string | number, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取给定日期在当年的第几天**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 否 | new Date() | 日期对象/日期字符串/时间戳 |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date`参数为字符串时有效 |
* 返回值 `Number`
**日期在当年的第几天**
* 举个例子
```js
getDayIndexOfYear('2017-01-20')
// => 20
getDayIndexOfYear('2018-05-20')
// => 140
```
> 特别说明:无
### 13. getWeekIndexOfYear()
* 方法签名
**getWeekIndexOfYear(date: Date | string | number, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取给定日期在当年的第几周**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 否 | new Date() | 日期对象/日期字符串/时间戳 |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date`参数为字符串时有效 |
* 返回值 `Number`
**日期在当年的第几周**
* 举个例子
```js
getWeekIndexOfYear('2017-01-20')
// => 3
getWeekIndexOfYear('2018-05-20')
// => 20
```
> 特别说明:无
### 14. getWeekIndexOfMonth()
* 方法签名
**getWeekIndexOfMonth(date: Date | string | number, format: string = 'yyyy-MM-dd')**
* 方法详细介绍
**获取给定日期在当月的第几周**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date | Date, String, Number | 否 | new Date() | 日期对象/日期字符串/时间戳 |
| format | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date`参数为字符串时有效 |
* 返回值 `Number`
**日期在当月的第几周**
* 举个例子
```js
getWeekIndexOfMonth('2017-01-20')
// => 3
getWeekIndexOfMonth('2018-05-20')
// => 2
```
> 特别说明:无
### 15. getDateDiff()
* 方法签名
**getDateDiff(date1: Date | string | number, date2: Date | string | number, format1: string = 'yyyy-MM-dd', format2: string = 'yyyy-MM-dd')**
* 方法详细介绍
**计算两个日期的差**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:-----|:----|:-----:|:------:| :-------- |
| date1 | Date, String, Number | 是 | 无 | 日期对象/日期字符串/时间戳 |
| date2 | Date, String, Number | 是 | 无 | 日期对象/日期字符串/时间戳 |
| format1 | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date1`参数为字符串时有效 |
| format2 | String | 否 | 'yyyy-MM-dd' | 字符串模板,当`date2`参数为字符串时有效 |
* 返回值 `ITimeSpan`
**日期的差值对象**
* 举个例子
```js
getDateDiff('2019-01-01', '2019-01-02')
// => { Day: 1, Hour: 0, Minute: 0, Second: 0, Millsecond: 0 }
getDateDiff('20190101', '2019-01-02 03:00:30', 'yyyyMMdd', 'yyyy-MM-dd HH:mm:ss')
// => { Day: 1, Hour: 3, Minute: 0, Second: 30, Millsecond: 0 }
getDateDiff(new Date(2019, 0, 1), '2019-01-02 03:00:30', 'yyyy-MM-dd HH:mm:ss')
// => { Day: 1, Hour: 3, Minute: 0, Second: 30, Millsecond: 0 }
```
> 特别说明:
> 1. ITimeSpan是一个对象接口,字段包含 `Day` `Hour` `Minute` `Second` `Millsecond`
> 2. 当 `date` 和 `date2` 只有一个是字符串时,只需传入一个字符串模板参数
> 3. date1 小于 date2 时,返回值为正;反之为负。
---
# StringUtil 字符串工具类
### 1. isEmpty()
* 方法定义
**isEmpty(input: string)**
* 函数详细介绍
**判断字符串是否为空**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 否 | | 输入字符串,如'我是测试的字符串' |
* 返回值 `Boolean`
**返回判断结果 true/false**
* 举个例子
```js
isEmpty('我是测试的字符串')
// => false
isEmpty('')
// => true
isEmpty(' ')
// => true
```
> 特殊说明: [无]
### 2. isNotEmpty()
* 方法定义
**isNotEmpty(input: string)**
* 函数详细介绍
**判断字符串是否不为空**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 否 | | 输入字符串,如'我是测试的字符串' |
* 返回值 `Boolean`
**返回判断结果 true/false**
* 举个例子
```js
isNotEmpty('我是测试的字符串');
// => true
isNotEmpty('');
// => false
isNotEmpty(' ');
// => false
```
> 特殊说明: [无]
### 3. trim()
* 方法定义
**trim(input: string)**
* 函数详细介绍
**将字符串去除空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'我是测 试的字符串' |
* 返回值 `String`
**返回去除空格后的字符串**
* 举个例子
```js
trim(' 测试字符串 ');
// => 测试字符串
trim('我是测 试的字符串');
// => 我是测试的字符串
```
> 特殊说明: 字符串前,后,中间的空格都可去除
### 4. startsWith()
* 方法定义
**startsWith(input: string,prefix: string)**
* 函数详细介绍
**判断字符串是否以某个字符串开头**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcdefg' |
| prefix | String | 是 | | 输入数字,如'ab' |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
startsWith('abcdefg','ab');
// => true
startsWith('abcdefg','b');
// => false
startsWith('abcdefg','a');
// => true
```
> 特殊说明: [无]
### 5. endsWith()
* 方法定义
**endsWith(input: string,suffix: string)**
* 函数详细介绍
**判断字符串是否以某个字符串结束**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcdefg' |
| suffix | String | 是 | | 输入数字,如'fg' |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
endsWith('abcdefg','fg');
// => true
endsWith('abcdefg','gh');
// => false
endsWith('abcdefg','g');
// => true
```
> 特殊说明: [无]
### 6. contains()
* 方法定义
**contains(input: string,searchSeq: string)**
* 函数详细介绍
**判断字符串是否包含某个字符串**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcdefg' |
| searchSeq | String | 是 | | 输入数字,如'abc' |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
contains('abcdefg','abc');
// => true
contains('abcdefg','gh');
// => false
contains('abcdefg','a');
// => true
```
> 特殊说明: [无]
### 7. equals()
* 方法定义
**equals(input1: string | number,input2: string | number)**
* 函数详细介绍
**判断两个字符串是否相等**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input1 | String,number | 是 | | 输入字符串,如'我是测试的字符串' 或 输入数字如 220022 |
| input2 | String,number | 是 | | 输入字符串,如'我是测试的字符串' 或 输入数字如 220022 |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
equals(220022,220022);
// => true
equals('我是测试的 字符串 ', '我是测试的字符串');
// => false
equals('我不是测试的字符串 ', '我是测试的字符串');
// => false
```
> 特殊说明: [无]
### 8. equalsIgnoreCase()
* 方法定义
**equalsIgnoreCase(input1: string,input2: string)**
* 函数详细介绍
**忽略大小写判断两个字符串是否相等**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input1 | String | 是 | | 输入字符串,如'equalsIgnoreCasE' |
| input2 | String | 是 | | 输入字符串,如 'equalsIgnoreCase' |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
equalsIgnoreCase('equalsIgnoreCasE', 'equalsIgnoreCase');
// => true
equalsIgnoreCase('equals ', 'equalsIgnoreCase');
// => false
```
> 特殊说明: [无]
### 9. containsWhitespace()
* 方法定义
**containsWhitespace(input: string)**
* 函数详细介绍
**判断字符串是否含有空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'我是 测试 的 字符串' |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
containsWhitespace('我是 测试 的 字符串 ');
// => true
containsWhitespace('我是测试的字符串');
// => false
containsWhitespace(' 我是测试的字符串 ');
// => true
```
> 特殊说明: 字符串前边,后边,中间的空格都包含在判断范围内
### 10. repeat()
* 方法定义
**repeat(ch: String | number, repeatTimes: number)**
* 函数详细介绍
**按指定数量生成给定字符串字符**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| ch | String,number | 是 | | 输入字符串,如'我是测试的字符串', 或 输入数字如 220022 |
| repeatTimes | number | 是 | | 输入数字,如 '6' |
* 返回值 `String`
**返回指定数量的给定字符串**
* 举个例子
```js
repeat('AB ',6);
// => 'AB AB AB AB AB AB '
repeat('C D',3);
// =>'C DC DC D'
repeat('*', 3)
// => '***'
repeat('ABC', 3)
// => 'ABCABCABC'
```
> 特殊说明: [无]
### 11. deleteWhitespace()
* 方法定义
**deleteWhitespace(input: String)**
* 函数详细介绍
**去除字符串中的空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'我是 测试 的 字符串 ' |
* 返回值 `String`
**返回去除空格后的字符串**
* 举个例子
```js
deleteWhitespace('我是 测试 的 字符串 ');
// => '我是测试的字符串'
deleteWhitespace(' 测试 ');
// => '测试'
```
> 特殊说明: [无]
### 12. rightPad()
* 方法定义
**rightPad(input: string | number, size: number, padStr: number | string)**
* 函数详细介绍
**将给定字符串进行右侧填充**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String,number | 是 | | 输入字符串,如'我是测试的字符串', 或 输入数字如 2222 |
| size | number | 是 | | 输入数字,如 2 |
| padStr | String,number | 是 | | 输入填充字符, 如 '--' 或 输入数字如 33 |
* 返回值 `String`
**右侧填充后的字符串**
* 举个例子
```js
rightPad(2222, 1, 33);
// => '222233'
rightPad('我是测试的字符串', 2, '--');
// => '我是测试的字符串----'
```
> 特殊说明: [无]
### 13. leftPad()
* 方法定义
**leftPad(input: string | number, size: number, padStr: number | string)**
* 函数详细介绍
**将给定字符串进行左侧填充**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String,number | 是 | | 输入字符串,如'我是测试的字符串', 或 输入数字如 220022 |
| size | number | 是 | | 输入数字,如 2 |
| padStr | String,number | 是 | | 输入填充字符, 如 '--' 或 输入数字如 220022 |
* 返回值 `String`
**左侧填充后的字符串**
* 举个例子
```js
leftPad(2222, 2, 3);
// => '332222'
leftPad('我是测试的字符串', 2, '--');
// => '----我是测试的字符串'
```
> 特殊说明: [无]
### 14. capitalize()
* 方法定义
**capitalize(input: string)**
* 函数详细介绍
**将字符串首字母转大写**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'admin' |
* 返回值 `String`
**首字母转大写后的字符串**
* 举个例子
```js
capitalize('admin');
// => 'Admin'
capitalize('capitalize');
// => 'Capitalize'
```
> 特殊说明: [无]
### 15. unCapitalize()
* 方法定义
**unCapitalize(input: string)**
* 函数详细介绍
**将字符串首字母转小写**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'Capitalize' |
* 返回值 `String`
**首字母转小写后的字符串**
* 举个例子
```js
unCapitalize('Capitalize');
// => 'capitalize'
unCapitalize('SetTimeout');
// => 'setTimeout'
```
> 特殊说明: [无]
### 16. swapCase()
* 方法定义
**swapCase(input: string)**
* 函数详细介绍
**将字符串中的字母大写转小写,小写转大写**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcdE' |
* 返回值 `String`
**大写转小写,小写转大写后的字符串**
* 举个例子
```js
swapCase('aBcde');
// => 'AbCDE'
swapCase('ABCDe');
// => 'abcdE'
```
> 特殊说明: [无]
### 17. countMatches()
* 方法定义
**countMatches(input: string, sub: string)**
* 函数详细介绍
**统计含有的子字符串的个数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcdeabcdeabcde', |
| sub | String | 是 | | 输入字符串,如'ab', |
* 返回值 `String`
**统计后字符串的个数**
* 举个例子
```js
countMatches('dabddadb', 'da');
// => 2
countMatches('abcdeabcdeabcde','ab');
// => 3
```
> 特殊说明: [无]
### 18. isAlpha()
* 方法定义
**isAlpha(input: string)**
* 函数详细介绍
**判断字符串是否为字母**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcdeabcdeabcde' |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isAlpha('abce测试');
// => false
isAlpha('abcdeabcdeabcde');
// => true
```
> 特殊说明: [无]
### 19. isAlphaSpace()
* 方法定义
**isAlphaSpace(input: string)**
* 函数详细介绍
**判断字符串是否为字母、空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcd eabc deab cde', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isAlphaSpace(' 测试 ');
// => false
isAlphaSpace('abcd eabc deab cde');
// => true
```
> 特殊说明: [无]
### 20. isAlphanumeric()
* 方法定义
**isAlphanumeric(input: string)**
* 函数详细介绍
**判断字符串是否为字母、数字**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'22abcdeabcdeabcde22', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isAlphanumeric('abcd串abcd');
// => false
isAlphanumeric('22abcdeabcdeabcde22');
// => true
```
> 特殊说明: [无]
### 21. isAlphanumericSpace()
* 方法定义
**isAlphanumericSpace(input: string)**
* 函数详细介绍
**判断字符串是否为字母、数字、空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'22abcde abcde abcde 22', |
* 返回值 `boolean
**返回判断结果 true/false**
* 举个例子
```js
isAlphanumericSpace('我是测试的 222字符串');
// => false
isAlphanumericSpace('22abcde abcde abcde 22');
// => true
```
> 特殊说明: [无]
### 22. isNumeric()
* 方法定义
**isNumeric(input: string)**
* 函数详细介绍
**判断字符串是否为数字**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如'220022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isNumeric('我是测试的 字符串');
// => false
isNumeric(220022);
// => true
```
> 特殊说明: [无]
### 23. isDecimal()
* 方法定义
**isDecimal(input: string)**
* 函数详细介绍
**判断字符串是否为小数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如'22.0022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isDecimal('220022');
// => false
isDecimal('22.0022');
// => true
```
> 特殊说明: [无]
### 24. isNegativeDecimal()
* 方法定义
**isNegativeDecimal(input: string)**
* 函数详细介绍
**判断字符串是否为负小数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如'-22.0022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isNegativeDecimal('22.0022');
// => false
isNegativeDecimal('-22.0022');
// => true
```
> 特殊说明: [无]
### 25. isPositiveDecimal()
* 方法定义
**isPositiveDecimal(input: string)**
* 函数详细介绍
**判断字符串是否为正小数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如 '22.0022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isPositiveDecimal('22.0022');
// => true
isPositiveDecimal('-22.0022');
// => false
```
> 特殊说明: [无]
### 26. isInteger()
* 方法定义
**isInteger(input: string)**
* 函数详细介绍
**判断字符串是否为整数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如'-220022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isInteger('-220022');
// => true
isInteger('22.0022');
// => false
```
> 特殊说明: [无]
### 27. isPositiveInteger()
* 方法定义
**isPositiveInteger(input: string)**
* 函数详细介绍
**判断字符串是否为正整数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如'220022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isPositiveInteger('220022');
// => true
isPositiveInteger('-22.22');
// => false
```
> 特殊说明: [无]
### 28. isNegativeInteger()
* 方法定义
**isNegativeInteger(input: string)**
* 函数详细介绍
**判断字符串是否为负整数**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入数字,如'-220022', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isPositiveInteger('-220022');
// => true
isPositiveInteger('22.22');
// => false
```
> 特殊说明: [无]
### 29. isNumericSpace()
* 方法定义
**isNumericSpace(input: string)**
* 函数详细介绍
**判断字符串是否为数字、空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'2 2 0 0 2 2', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isNumericSpace('2 2 0 0 2 2');
// => true
isNumericSpace('2222aa');
// => false
```
> 特殊说明: [无]
### 30. isWhitespace()
* 方法定义
**isWhitespace(input: string)**
* 函数详细介绍
**判断字符串是否为空格**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如' ', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isWhitespace(' ');
// => true
isWhitespace('22.22');
// => false
```
> 特殊说明: [无]
### 31. isAllLowerCase()
* 方法定义
**isAllLowerCase(input: string)**
* 函数详细介绍
**判断字符串是否为小写字母**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串, 如'abcdefg ', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isAllLowerCase('abcdefg');
// => true
isAllLowerCase('isAllLowerCase');
// => false
```
> 特殊说明: [无]
### 32. isAllUpperCase()
* 方法定义
**isAllUpperCase(input: string)**
* 函数详细介绍
**判断字符串是否为大写字母**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串, 如'ABCDEFG ', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isAllUpperCase('ABCDEFG');
// => true
isAllUpperCase('isAllLowerCase');
// => false
```
> 特殊说明: [无]
### 33. defaultIfEmpty()
* 方法定义
**defaultIfEmpty(input: string, defaultStr: string)**
* 函数详细介绍
**如果字符串为空则使用默认字符串, 否则不变**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串, 如'', |
| defaultStr | String | 是 | | 输入字符串, 如'我是测试的字符串', |
* 返回值 `String`
**返回字符串为空则使用默认字符串, 否则不变**
* 举个例子
```js
defaultIfEmpty('', 'abcd');
// => 'abcd'
defaultIfEmpty('我是测试的字符串isAllLowerCase', '我是测试的字符串');
// => '我是测试的字符串isAllLowerCase'
```
> 特殊说明: 当传入值不为空时,返回传入值.
### 34. reverse()
* 方法定义
**reverse(input: string)**
* 函数详细介绍
**字符串反转**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'abcd', |
* 返回值 `String`
**返回反转后的字符串**
* 举个例子
```js
reverse('abcd');
// => 'dcba'
reverse('ABCD');
// => 'DCBA'
```
> 特殊说明: [无]
### 35. removeSpecialCharacter()
* 方法定义
**removeSpecialCharacter(input: string)**
* 函数详细介绍
**删掉特殊字符(英文状态下)**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如''remove SpecialCharacter$%%^'', |
* 返回值 `String`
**删掉特殊字符(英文状态下)后的字符串**
* 举个例子
```js
removeSpecialCharacter('remove SpecialCharacter$%%^');
// => 'remove SpecialCharacter'
removeSpecialCharacter('removeSpecialCharacter##*');
// => 'removeSpecialCharacter'
```
> 特殊说明:[无]
### 36. isSpecialCharacterAlphanumeric()
* 方法定义
**isSpecialCharacterAlphanumeric(input: string)**
* 函数详细介绍
**只包含特殊字符、数字和字母(不包括空格,若想包括空格,改为[ -~])**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'2222SpecialCharacter$%%^', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isSpecialCharacterAlphanumeric('2222SpecialCharacter$%%^');
// => true
isSpecialCharacterAlphanumeric('(字符串2222SpecialCharacter$%%^)');
// => false
```
> 特殊说明:[无]
### 37. format()
* 方法定义
**format(message: string, arr: any)**
* 函数详细介绍
**消息格式化**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| message | String | 是 | | 输入字符串,如'for m at ', |
| arr | any | 是 | | 输入字符串,如'format', |
* 返回值 `String`
**消息格式化后的字符串**
* 举个例子
```js
format('format ', ['123']);
// => 'format '
format('format {0}', ['123']);
// => 'format 123'
format('format {0} {0}', ['123']);
// => 'format 123 123'
format('format {0} {1}', ['123']);
// => 'format 123 undefined'
```
> 特殊说明:[无]
### 38. isChinese()
* 方法定义
**isChinese(input: string)**
* 函数详细介绍
**中文校验**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'我是测试的字符串', |
* 返回值 `boolean`
**返回判断结果 true/false**
* 举个例子
```js
isChinese('我是测试的字符串');
// => true
isChinese('我是测试的字 abc 符串');
// => false
```
> 特殊说明:[无]
### 39. removeChinese()
* 方法定义
**removeChinese(input: string)**
* 函数详细介绍
**去掉中文字符**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'我是测试的字 abc 符串', |
* 返回值 `String`
**返回去掉中文字符后的字符串**
* 举个例子
```js
removeChinese('我是测试的字 abc 符串');
// => abc
removeChinese('测试abc');
// => abc
```
> 特殊说明:[无]
### 40. escapeMetacharacter()
* 方法定义
**escapeMetacharacter(input: string)**
* 函数详细介绍
**转义元字符**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'\n\\?', |
* 返回值 `String`
**返回转义后的字符**
* 举个例子
```js
escapeMetacharacter('\'\'');
// => '\'\''
escapeMetacharacter('\n\\?');
// => '\n\\?'
```
> 特殊说明:[无]
### 41. escapeMetacharacterOfStr()
* 方法定义
**escapeMetacharacterOfStr(input: string)**
* 函数详细介绍
**转义字符串中的元字符**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'我是测试的字abc符串', |
* 返回值 `String`
**返回转义后的字符串**
* 举个例子
```js
escapeMetacharacterOfStr('\'\'');
// => '\'\''
escapeMetacharacterOfStr('我是测试的字abc\n符串');
// => '我是测试的字abc\n符串'
```
> 特殊说明:[无]
### 42. camelize()
* 方法定义
**camelize(input: string)**
* 函数详细介绍
**将中划线分隔形式的字符串转换为驼峰式的字符串**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'last-index-of', |
* 返回值 `String`
**中划线分隔形式的字符串转换为驼峰式的字符串**
* 举个例子
```js
camelize('last-index-of');
// => 'lastIndexOf'
camelize('escape-metacharacter-of-str');
// => 'escapeMetacharacterOfStr'
```
> 特殊说明:[无]
### 43. hyphenate()
* 方法定义
**hyphenate(input: string)**
* 函数详细介绍
**将驼峰式的字符串转换为中划线分隔形式的字符串**
* 参数
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
|:----------- | :----------- |:----------: | :------: | :------------------------------------------------------------ |
| input | String | 是 | | 输入字符串,如'lastIndexOf', |
* 返回值 `String`
**驼峰式的字符串转换为中划线分隔形式的字符串**
* 举个例子
```js
hyphenate('lastIndexOf');
// => 'last-index-of'
hyphenate('escapeMetacharacterOfStr');
// => 'escape-metacharacter-of-str'
```
> 特殊说明:[无]