StringUtils.java
7.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
package com.xdy.util;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author 蒋洪波
* @version 版本号
* @file StringUtils.java
* @brief 简要说明
* 详细说明,如果没有请删除
* @date 2017/10/12
* Copyright (c) 2017, 学点云
* All rights reserved.
*/
public class StringUtils {
/**
* @param url
* @return
* @brief 保存URL地址最后的名称
*/
public static String getUrlLastName(String url) {
int i = url.lastIndexOf("/");
String substring = url.substring(i + 1, url.length());
//判断是否有非法字符
if (substring.contains("?")) {
int i1 = substring.indexOf("?");
substring = substring.substring(0, i1);
}
return substring;
}
/**
* @param phone
* @return
* @brief 处理座机号 清除“-”
*/
public static String telephoneClearHorizontalLine(String phone) {
String str = null;
if (!TextUtils.isEmpty(phone)) {
str = phone.replaceAll("-", "");
str = str.replaceAll(" ", "");
}
return str;
}
/**
* @brief String Utils 将String集合中的字符串用,号分隔并去掉空格返回一个字符串
*/
public static String listSplitByComma(List<String> list) {
return listSplitByChar(list, ',');
}
/**
* @brief String Utils 将String集合中的字符串用指定的分隔并去掉空格返回一个字符串
*/
public static String listSplitByChar(List<String> list, @NonNull char splitChar) {
if (list.size() == 0)
return null;
String[] strings = list.toArray(new String[list.size()]);
return join(strings, splitChar, 0, strings.length);
}
public static String join(Object[] array, char separator, int startIndex, int endIndex) {
if (array == null) {
return null;
}
int bufSize = (endIndex - startIndex);
if (bufSize <= 0) {
return null;
}
bufSize *= ((array[startIndex] == null ? 16 : array[startIndex].toString().length()) + 1);
StringBuffer buf = new StringBuffer(bufSize);
for (int i = startIndex; i < endIndex; i++) {
if (i > startIndex) {
buf.append(separator);
}
if (array[i] != null) {
buf.append(array[i]);
}
}
return buf.toString();
}
/**
* 通过图片地址解析图片分辨率
* @param pic
* @return
*/
public static float[] parseImgResolution(String pic) {
try {
if (!TextUtils.isEmpty(pic)) {
float[] widthAndHeight = new float[2];
if (pic.contains("_")) {
int begin = pic.lastIndexOf('_') + 1;//_前面+1开始截
int end = pic.lastIndexOf('.');
if (end > begin) {
String substring = pic.substring(begin, end);
String[] xes = substring.split("X");
if (xes.length == 2) {
//说明解析成功了
widthAndHeight[0] = Float.parseFloat(xes[0]);
widthAndHeight[1] = Float.parseFloat(xes[1]);
return widthAndHeight;
}
}
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
return null;
}
/**
* 检测是否有emoji表情
* @param source
* @return
*/
public static boolean containsEmoji(String source) {
int len = source.length();
for (int i = 0; i < len; i++) {
char codePoint = source.charAt(i);
if (!isEmojiCharacter(codePoint)) { //如果不能匹配,则该字符是Emoji表情
return true;
}
}
return false;
}
/**
* 判断是否是Emoji
* @param codePoint 比较的单个字符
* @return
*/
private static boolean isEmojiCharacter(char codePoint) {
return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) ||
(codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000)
&& (codePoint <= 0x10FFFF));
}
/**
* 检索出一段文字中的手机号
* @param text
* @return
*/
public static String checkNum(String text) {
if (text == null || text.length() == 0) {
return "";
}
Pattern pattern = Pattern.compile("(?<!\\d)(?:(?:1[34578]\\d{9})|(?:861[34578]\\d{9}))(?!\\d)");
Matcher matcher = pattern.matcher(text);
StringBuffer bf = new StringBuffer(64);
while (matcher.find()) {
bf.append(matcher.group()).append(",");
}
int len = bf.length();
if (len > 0) {
bf.deleteCharAt(len - 1);
}
return bf.toString();
}
/**
* 拼接字符串操作
* @param str
* @return
*/
public static String concat(Object... str) {
if (str != null) {
StringBuilder sb = new StringBuilder();
for (Object s : str) {
sb.append(s.toString());
}
return sb.toString();
}
return null;
}
/**
* @param mobiles
* @return
* @biref 是否是手機號
*/
public static boolean isMobileNO(String mobiles) {
/*
* 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
* 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通)
* 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
*/
String telRegex = "[1][34578]\\d{9}";// "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
if (TextUtils.isEmpty(mobiles)) {
return false;
} else
return mobiles.matches(telRegex);
}
/**
* @param t1
* @return
* @brief 验证密码是否符合要求
*/
public static boolean validatePassword(String t1) {
Pattern pattern = Pattern.compile("^[a-zA-Z0-9`~!@#$%^&*()-_+=\",./<>?:'{}]{6,26}$");
Matcher matcher = pattern.matcher(t1);
return matcher.matches();
}
/**
* @param t1
* @return
* @brief 字符串所占字符数
*/
public static int charLength(String t1) {
int len = 0;
for (int i = 0; i < t1.length(); i++) {
if (t1.codePointAt(i) > 127 || t1.codePointAt(i) == 94) {
len += 2;
} else {
len++;
}
}
return len;
}
/**
* json 格式化
* @param bodyString
* @return
*/
public static String jsonFormat(String bodyString) {
String message;
try {
if (bodyString.startsWith("{")) {
JSONObject jsonObject = new JSONObject(bodyString);
message = jsonObject.toString(4);
} else if (bodyString.startsWith("[")) {
JSONArray jsonArray = new JSONArray(bodyString);
message = jsonArray.toString(4);
} else {
message = bodyString;
}
} catch (JSONException e) {
message = bodyString;
}
return message;
}
public static String[] splitAtSymbol(String name) {
String[] split = name.split("@@@");
return split;
}
}