StringUtil.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. export default class StringUtil {
  2. /** 不区分大小写 */
  3. static equalsIgnoreCase(str1, str2) {
  4. if(this.isString(str1, str2)) {
  5. return str1.toLowerCase() == str2.toLowerCase()
  6. } else {
  7. return false
  8. }
  9. }
  10. /** 不区分大小写 忽略类型 */
  11. static eqlObjIgnoreCase(obj, str) {
  12. if(obj == null && str == null) return true
  13. if(obj == null && str != null) return false
  14. if(this.isString(str)) {
  15. return obj.toString().toLowerCase() == str.toLowerCase()
  16. } else {
  17. return false
  18. }
  19. }
  20. /** 不区分大小写 忽略类型 */
  21. static eqlObjIgnoreCases(obj, ...str) {
  22. if(str == null) return false
  23. for (var i = 0; i < str.length; i++) {
  24. if(this.eqlObjIgnoreCase(obj, str[i])){
  25. return true
  26. }
  27. }
  28. return false
  29. }
  30. /** 不区分大小写 */
  31. static equalsIgnoreCases() {
  32. if(arguments.length <= 1) return false
  33. for (var i = 1; i < arguments.length; i++) {
  34. let bool = this.equalsIgnoreCase(arguments[0], arguments[i])
  35. if(bool) return true
  36. }
  37. return false
  38. }
  39. /** 判断字符串是否为null或空值 true:为空;false:不为空*/
  40. static isNullOrEmptyTrim(str) {
  41. return str == null || this.trim(str).length == 0
  42. }
  43. /**去除所有空格*/
  44. static trimAll(str) {
  45. if(str == null) return str
  46. if(str.constructor == String) {
  47. return str.replace(/\s+/g,"")
  48. } else {
  49. return str
  50. }
  51. }
  52. /**去除两头空格*/
  53. static trim(str) {
  54. if(str == null) return str;
  55. if(str.constructor == String) {
  56. return str.replace(/^\s+|\s+$/g, "")
  57. } else {
  58. return str
  59. }
  60. }
  61. /** 去除左空格 */
  62. static trimLeft(str) {
  63. if(str == null) return str
  64. if(str.constructor == String) {
  65. return str.replace( /^\s*/, '')
  66. } else {
  67. return str
  68. }
  69. }
  70. /** 去除左空格 */
  71. static trimRight(str) {
  72. if(str == null) return str
  73. if(str.constructor == String) {
  74. return str.replace(/(\s*$)/g, "")
  75. } else {
  76. return str
  77. }
  78. }
  79. /** 判断对象是否是字符串 */
  80. static isString() {
  81. if(arguments.length == 0) return false
  82. for (var i = 0; i < arguments.length; i++) {
  83. let bool = Object.prototype.toString.call(arguments[i]) === "[object String]"
  84. if(!bool) return false
  85. }
  86. return true
  87. }
  88. /** 判断字符串中是否包含另一个字符串
  89. * @param String str 原字符串
  90. * @param String s 被包含的字符串
  91. * @return Boolean true:包含
  92. */
  93. static contains(str, contains) {
  94. if(this.isString(str, contains)) {
  95. return str.indexOf(contains) >= 0
  96. } else {
  97. return false
  98. }
  99. }
  100. /** 判断字符串头部是否相同
  101. * @param String str 字符串
  102. * @param String start 字符串头部
  103. * @return Boolean
  104. */
  105. static startEquals(str, start) {
  106. if(this.isString(str, start)) {
  107. let reg = new RegExp("^" + start)
  108. return reg.test(str)
  109. } else {
  110. return false
  111. }
  112. }
  113. /** 判断字符串尾部是否相同
  114. * @param String str 字符串
  115. * @param String end 字符串尾部
  116. * @return Boolean
  117. */
  118. static endEquals(str, end) {
  119. if(this.isString(str, end)) {
  120. let reg = new RegExp(end + "$")
  121. return reg.test(str)
  122. } else {
  123. return false
  124. }
  125. }
  126. /** 判断字符串头部是否相同 不区分大小写
  127. * @param String str 字符串
  128. * @param String start 字符串头部
  129. * @return Boolean
  130. */
  131. static startEqualsIgnoreCase(str, start) {
  132. if(this.isString(str, start)) {
  133. let reg = new RegExp("^" + start.toUpperCase())
  134. return reg.test(str.toUpperCase())
  135. } else {
  136. return false
  137. }
  138. }
  139. /** 判断字符串尾部是否相同 不区分大小写
  140. * @param String str 字符串
  141. * @param String end 字符串尾部
  142. * @return Boolean
  143. */
  144. static endEqualsIgnoreCase(str, end) {
  145. if(this.isString(str, end)) {
  146. let reg = new RegExp(end.toUpperCase() + "$")
  147. return reg.test(str.toUpperCase())
  148. } else {
  149. return false
  150. }
  151. }
  152. /** 判断字符串头部是否相同 不区分大小写 请传入多个字符串,第一个参数为参照物参数
  153. * @return Boolean
  154. */
  155. static startEqualsIgnoreCases() {
  156. if(arguments.length <= 1) return false
  157. for (var i = 1; i < arguments.length; i++) {
  158. let bool = this.startEqualsIgnoreCase(arguments[0], arguments[i])
  159. if(bool) return true
  160. }
  161. return false
  162. }
  163. /** 判断字符串尾部是否相同 不区分大小写 请传入多个字符串,第一个参数为参照物参数
  164. * @return Boolean
  165. */
  166. static endEqualsIgnoreCases() {
  167. if(arguments.length <= 1) return false
  168. for (var i = 1; i < arguments.length; i++) {
  169. let bool = this.endEqualsIgnoreCase(arguments[0], arguments[i])
  170. if(bool) return true
  171. }
  172. return false
  173. }
  174. /** 替换第一个reOld*/
  175. static replace(str, reOld, reNew){
  176. if (this.isNullOrEmptyTrim(str)) return str
  177. return str.replace(reOld, reNew)
  178. }
  179. /** 替换所有与reOld匹配的 */
  180. static replaceAll(str, reOld, reNew){
  181. if (this.isNullOrEmptyTrim(str)) return str
  182. return str.replace(new RegExp(reOld, 'g'), reNew)
  183. }
  184. /**
  185. * 检测是否是手机号码
  186. * @param {String} phone 手机号
  187. * @return {Boolean} 是否是手机号
  188. */
  189. static isPhone(phone) {
  190. if (this.isString(phone) || phone.length == 11) {
  191. var reg = /^1[34578][0-9]{9}$/; //验证规则,[34578]之间不需要|
  192. var flag = reg.test(phone); //true
  193. return flag
  194. } else {
  195. return false
  196. }
  197. }
  198. /**
  199. * 字符串转成数小组
  200. * @param {String} str 要拆分的字符串
  201. * @param {String} separator 分隔符
  202. * @return {Array} 拆分后的字符串数小组
  203. */
  204. static split(str, separator) {
  205. if(this.isNullOrEmptyTrim(str)) null
  206. str = str + ''
  207. let strArr = str.split(separator);
  208. return strArr
  209. }
  210. /**
  211. * 字符串转成数小组
  212. * @param {String} str 要拆分的字符串
  213. * @param {String} separator 分隔符
  214. * @return {Array} 拆分后的字符串数小组
  215. */
  216. static splitTrim(str, separator) {
  217. let arr = this.split(str, separator)
  218. let retArr = []
  219. if(arr != null && arr.length > 0){
  220. for (let item of arr) {
  221. if(!this.isNullOrEmptyTrim(item)){
  222. retArr = retArr.concat(item)
  223. }
  224. }
  225. }
  226. return retArr
  227. }
  228. /**
  229. * 截取字符串
  230. * @param {int} start 开始位置
  231. * @param {int} end 结束位置
  232. * @return {String} 截取后的字符串
  233. */
  234. static subString(str, start, end) {
  235. if(this.isNullOrEmptyTrim(str)) return ''
  236. if(start >= end || start > str.length) return ''
  237. if(end > str.length) end = str.length
  238. return str.substring(start, end)
  239. }
  240. /**
  241. * 截取字符串
  242. * @param {int} start 开始位置
  243. * @param {String} endStr 结束位置字符串
  244. * @return {String} 截取后的字符串
  245. */
  246. static subStringToEndStr(str, start, endStr) {
  247. if(this.isNullOrEmptyTrim(str)) return ''
  248. let end = str.indexOf(endStr + '')
  249. return this.subString(str, start, end)
  250. }
  251. /**
  252. * 截取字符串
  253. * @param {String} startStr 开始位置
  254. * @param {int} end 结束位置字符串
  255. * @return {String} 截取后的字符串
  256. */
  257. static subStringToStartStr(str, startStr, end) {
  258. if(this.isNullOrEmptyTrim(str)) return ''
  259. let start = str.indexOf(startStr + '')
  260. if(start < 0) return ''
  261. return this.subString(str, start + 1, end)
  262. }
  263. /**
  264. * 截取字符串
  265. * @param {String} startStr 开始位置
  266. * @param {String} endStr 结束位置字符串
  267. * @return {String} 截取后的字符串
  268. */
  269. static subStringtoStr(str, startStr, endStr) {
  270. if(this.isNullOrEmptyTrim(str)) return ''
  271. let start = str.indexOf(startStr + '')
  272. if(start < 0) return ''
  273. let end = str.indexOf(endStr + '')
  274. return this.subString(str, start + 1, end)
  275. }
  276. }