- 浏览: 411306 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (184)
- IDE (4)
- dotCMS (3)
- Liferay Portal (1)
- J2EE (7)
- My SQL (16)
- IBM DB2 (3)
- Oracle (2)
- JDBC (4)
- Hibernate (3)
- JSP (0)
- Framework (4)
- Java编程 (30)
- C++编程 (0)
- Struts 1.X (2)
- Struts 2.X (6)
- Linux (11)
- Spring (7)
- JavaScript (6)
- Ajax (2)
- XML (3)
- IBM Websphere Portal (1)
- IBM Lotus Quickr (1)
- CMS (2)
- ERP (0)
- CRM (0)
- 大型网站架构开发 (1)
- 面试武器 (2)
- HTML 5 (2)
- dTree && webFxloadTree (2)
- JVM (7)
- SQL Server (3)
- Tomcat && Apache && Jboss && Weblogic-中间件 (4)
- FreeMarker (2)
- MongoDB (7)
- OpenSource开源 (24)
- Cloud (0)
- FFmpeg (3)
- Thrift (1)
- SpringSide (1)
- Design Pattern (1)
- solr&&ES (2)
- git&svn (1)
- 大数据 (8)
- 人工智能 (0)
- Hadoop (3)
- Spark (0)
- Sqoop (1)
- Flume (1)
- Hive (3)
- HDFS (4)
- ES (0)
- Redis (1)
- Kafka (3)
- MR (0)
- 机器学习 (0)
- 深度学习 (0)
- Impala (2)
- HBase (2)
- Spring Boot (1)
- Spring Cloud (0)
- 大数据架构 (6)
- 架构思想理论 (6)
- 技术管理 (4)
- 数据结构与算法 (4)
最新评论
-
huijz:
...
Spring Data JPA研究-使用Spring Data JPA 简化JPA 开发(ZZ) -
用户名不存在:
[img][/img][*]引用[u][/u][i][/i][ ...
MongoDB 模糊查询的三种实现方式-morphia实现 -
junsheng100:
请给个完整的例子吧!包括jar文件等
java调用ffmpeg获取视频文件信息参数代码 -
mj:
谢谢!!
SQL Server里面如何导出包含(insert into)数据的SQL脚本 (转载ZZ)
关键字: java 常用类 字符串
今天先整理下自己常用的一些字符串常用类:
Java代码
1.import java.io.*;
2.import java.text.DecimalFormat;
3.import org.apache.oro.text.regex.PatternCompiler;
4.import org.apache.oro.text.regex.PatternMatcher;
5.import org.apache.oro.text.regex.Perl5Matcher;
6.import org.apache.oro.text.regex.Pattern;
7.import org.apache.oro.text.regex.Perl5Compiler;
8.
9.import org.apache.commons.logging.Log;
10./**
11. * <p>Title: StringUtils</p>
12. * <p>Description: 字符串工具类; 配合JakartaCommons工具类使用;</p>
13. * <p>Copyright: Copyright (c) 2003</p>
14. * <p>Company: pubinfo</p>
15. * @author chineseren
16. * @version 1.0
17. */
18.public class StringUtils {
19. /**
20. * debug log
21. */
22. private static Log log = Debuger.getDebuger(StringUtils.class);
23. /**
24. * String charSet 转化
25. * @param str String
26. * @return String
27. */
28. public static String toChinese(String str) {
29. if(str == null || str.length() == 0) {
30. return "";
31. }
32. try {
33. return new String(str.getBytes("ISO8859_1"), "GBK");
34. } catch(UnsupportedEncodingException ex) {
35. return str;
36. }
37. }
38.
39. /**
40. * 判断字符串是否null或者""
41. * @param src String
42. * @return boolean
43. */
44. public static boolean isBlank(String src) {
45. if(null == src || "".equals(src.trim())) {
46. return true;
47. }
48. return false;
49. }
50.
51. /**
52. * @param string - 待判断的字符串是否为null或者空字符串
53. * @return boolean
54. * @roseuid 3FBE26DE0326
55. */
56. public static boolean isNullOrEmpty(String string) {
57. if(string == null || string.trim().equals("")) {
58. return true;
59. } else {
60. return false;
61. }
62. }
63.
64. /**
65. * 把没有实例化的串转化为空串
66. * @param p_in String
67. * @return String
68. */
69. public static String convertNull(String str) {
70. if(str == null) {
71. return "";
72. } else {
73. return str;
74. }
75. }
76.
77. /**
78. * 控制页面显示长度,dataStr为控制长度的字符串,length为字节的长度;
79. * 字符串的字节长度小于显示长度,则原样输出,否则以XXX...的形式输出。
80. * @param dataStr String
81. * @param length int
82. * @return String
83. */
84. public static String controlLength(String dataStr, int length) {
85. if(dataStr == null) {
86. return "";
87. }
88. //转化成格式化的Html
89. dataStr = StringUtils.escape(dataStr);
90.
91. StringBuffer sb = new StringBuffer();
92. char datach;
93. int lengthi = 0; //字符串的字节长度
94. int strj = 0; //字符串的实际长度
95. int lengthi3 = 0; //字节长度-4
96. //得到字符串的字节长度
97. while(strj < dataStr.length()) {
98. datach = dataStr.charAt(strj++);
99. if(((datach <= 'z') && (datach >= 'a'))
100. || ((datach <= 'Z') && (datach >= 'A'))
101. || ((datach <= '9') && (datach >= '0'))) {
102. lengthi++;
103. } else {
104. lengthi = lengthi + 2;
105. }
106. }
107. strj = 0;
108. //得到字符串的字节长度-4
109. while((lengthi3 < length - 4) && (strj < dataStr.length())) {
110. datach = dataStr.charAt(strj++);
111. sb.append(datach);
112. if(((datach <= 'z') && (datach >= 'a'))
113. || ((datach <= 'Z') && (datach >= 'A'))
114. || ((datach <= '9') && (datach >= '0'))) {
115. lengthi3++;
116. } else {
117. lengthi3 = lengthi3 + 2;
118. }
119. }
120. if(lengthi <= length) {
121. return dataStr;
122. } else {
123. sb.append("...");
124. }
125. return sb.toString();
126. }
127.
128. /**
129. * 把字符串转化成HTML字符串
130. * @param str --需要转换的字符串
131. * @return String --返回把特殊字符转换了的字符串
132. */
133. public static String escape(String str) {
134. if(str == null) {
135. return "";
136. }
137. byte[] data = str.getBytes();
138. int len = data.length;
139. StringBuffer result = new StringBuffer(len * 2);
140.
141. int begin = 0, count = 0, tt = 0;
142. for(int i = 0; i < len; i++) {
143. switch((char)data[i]) {
144. case '&':
145. result.append(new String(data, begin, count));
146. result.append("&");
147. begin = i + 1;
148. count = 0;
149. break;
150. case '\"':
151. result.append(new String(data, begin, count));
152. result.append(""");
153. begin = i + 1;
154. count = 0;
155. break;
156. case '<':
157. result.append(new String(data, begin, count));
158. result.append("<");
159. begin = i + 1;
160. count = 0;
161. break;
162. case '>':
163. result.append(new String(data, begin, count));
164. result.append(">");
165. begin = i + 1;
166. count = 0;
167. break;
168. case '\n':
169. result.append(new String(data, begin, count));
170. result.append("<br>");
171. begin = i + 1;
172. count = 0;
173. break;
174. case '$':
175. result.append(new String(data, begin, count));
176. result.append("$$");
177. begin = i + 1;
178. count = 0;
179. break;
180. case ' ':
181. result.append(new String(data, begin, count));
182. result.append(" ");
183. begin = i + 1;
184. count = 0;
185. break;
186. default:
187. count++;
188. break;
189. }
190. }
191. if(count > 0) {
192. result.append(new String(data, begin, count));
193. }
194. return result.toString();
195. }
196.
197.
198. /**
199. * 把字符串转化成HTML字符串(除了空格)
200. * @param str --需要转换的字符串
201. * @return String --返回把特殊字符转换了的字符串
202. */
203. public static String escape2(String str) {
204. if(str == null) {
205. return "";
206. }
207. byte[] data = str.getBytes();
208. int len = data.length;
209. StringBuffer result = new StringBuffer(len * 2);
210.
211. int begin = 0, count = 0, tt = 0;
212. for(int i = 0; i < len; i++) {
213. switch((char)data[i]) {
214. case '&':
215. result.append(new String(data, begin, count));
216. result.append("&");
217. begin = i + 1;
218. count = 0;
219. break;
220. case '\"':
221. result.append(new String(data, begin, count));
222. result.append(""");
223. begin = i + 1;
224. count = 0;
225. break;
226. case '<':
227. result.append(new String(data, begin, count));
228. result.append("<");
229. begin = i + 1;
230. count = 0;
231. break;
232. case '>':
233. result.append(new String(data, begin, count));
234. result.append(">");
235. begin = i + 1;
236. count = 0;
237. break;
238. case '\n':
239. result.append(new String(data, begin, count));
240. result.append("<br>");
241. begin = i + 1;
242. count = 0;
243. break;
244. case '$':
245. result.append(new String(data, begin, count));
246. result.append("$$");
247. begin = i + 1;
248. count = 0;
249. break;
250. default:
251. count++;
252. break;
253. }
254. }
255. if(count > 0) {
256. result.append(new String(data, begin, count));
257. }
258. return result.toString();
259. }
260.
261.
262. /**
263. * 将textarea输入的文本转化成前台html显示的格式,主要将回车(/r/n)替换成<br>," "替换成
264. * @param text String
265. * @return String
266. */
267. public static String textConvertToHtmlText(String text){
268. if(text != null){
269. return text.replaceAll("\r\n", "<br>").replaceAll(" ", " ");
270. }else{
271. return null;
272. }
273. }
274. /**
275. * 全数字判断
276. * @param strIn String
277. * @return boolean
278. */
279. public static boolean isNumberString(String strIn) {
280. return isNumberString(strIn, "0123456789");
281. }
282.
283. /**
284. * 全数字判断,参照字符串strRef可以是:"0123456789","23546"或"0123"等等。
285. * @param strIn String
286. * @param strRef String
287. * @return boolean
288. */
289. public static boolean isNumberString(String strIn, String strRef) {
290. if(strIn == null || strIn.length() == 0)
291. return(false);
292. for(int i = 0; i < strIn.length(); i++) {
293. String strTmp = strIn.substring(i, i + 1);
294. if(strRef.indexOf(strTmp, 0) == -1)
295. return(false);
296. }
297. return(true);
298. }
299.
300. /**
301. * 字符串替换,调用了org.apache.commons.lang.StringUtils.replace()
302. * @param strObj 目标字符串
303. * @param str1 被替换的字符串
304. * @param str2 替换成的字符串
305. * @return String
306. */
307. public static String replace(String strObj, String str1, String str2) {
308. if("".equals(str1)) {
309. return strObj;
310. }
311. return org.apache.commons.lang.StringUtils.replace(strObj, str1, str2);
312. }
313. /**
314. * 根据内容生成摘要
315. * @param content String
316. * @return String
317. */
318. public static String createSummary(String content){
319. if(content == null)return null;
320. String regexp = "<.*?>";
321. //System.out.println(regexp);
322. content = content.replaceAll(regexp,"");
323. int len = content.length();
324. if(len > 120){
325. return content.substring(0, 120);
326. }else{
327. return content;
328. }
329. }
330.
331. /**
332. * 字符串切割,比如"#sd#kf##dkf##Ej#"按照"#"切割之后length=8,即"#"出现的次数加一
333. * @param strObj 目标字符串
334. * @param str1 用于切割的字符串
335. * @return String[]
336. */
337. public static String[] split(String strObj, String delimiter) {
338. if(strObj == null) {
339. return null;
340. }
341. if("".equals(strObj) || "".equals(delimiter)) {
342. return new String[] {
343. strObj};
344. }
345.
346. int count = org.apache.commons.lang.StringUtils.countMatches(strObj,
347. delimiter) + 1; //调用org.apache.commons
348. int length = delimiter.length();
349. String[] strs = new String[count];
350. int posPre = 0 - length;
351. int pos = 0;
352. for(int i = 0; i < count - 1; i++) {
353. pos = strObj.indexOf(delimiter, posPre + length);
354. strs[i] = strObj.substring(posPre + length, pos);
355. posPre = pos;
356. }
357. strs[count - 1] = strObj.substring(posPre + length);
358. return strs;
359. }
360.
361. /**
362. * 用于转义单斜杠特殊字符
363. * @param str String
364. * @return String
365. */
366. public static final String appendStr(String str) {
367. char c = ' ';
368. StringBuffer sb = new StringBuffer();
369. for(int i = 0; i < str.length(); i++) {
370. c = str.charAt(i);
371. if(c == '\\') {
372. sb.append("\\\\");
373. } else {
374. sb.append(c);
375. }
376. }
377. return sb.toString();
378. }
379.
380. /**
381. * 将reader流中的数据变成String
382. * @param is reader流
383. * @return String
384. * @throws IOException
385. */
386. public static String readerToString(Reader is) throws IOException {
387. StringBuffer sb = new StringBuffer();
388. char[] b = new char[8192];
389. int n;
390. while((n = is.read(b)) > 0) {
391. sb.append(b, 0, n);
392. }
393. return sb.toString();
394. }
395.
396. /**
397. * 将input流中的数据变成String
398. * @param is InputStream流
399. * @throws IOException
400. * @return String
401. */
402. public static String inputStreamToString(InputStream is) throws IOException {
403. return readerToString(new InputStreamReader(is));
404. }
405.
406. /**
407. * 返回字符串的前len个字符.例如:输入"abcdefg",3 返回 "abc".
408. * @param value String
409. * @param len int
410. * @return String
411. */
412. public static String getLmtStr(String value, int len) {
413. if(value == null || value.length() <= len)
414. return value;
415. return value.substring(0, len);
416. }
417. /**
418. * 返回字符串的前len个字符.例如:输入"abcdefg",3 返回 "abc...".
419. * @param value String
420. * @param len int
421. * @return String
422. */
423. public static String getLmtString(String value, int len) {
424. if(value == null || value.length() <= len)
425. return value;
426. return value.substring(0, len) + "...";
427. }
428. /**
429. * 输入带html标签的字符串,返回干净的字符串,其中将( ->" "),(<br>->\r\n),(<p>->\r\n\r\n)
430. * @param body String
431. * @return String
432. */
433. public static String getCleanString(String body) {
434. //替换 ->" ",<br>->\r\n <p>->\r\n\r\n
435. body = body.replaceAll("&[nN][bB][sS][pP];"," ");
436. body = body.replaceAll("<[bB][rR]\\s*>","\r\n");
437. body = body.replaceAll("<[pP]\\s*>","\r\n\r\n");
438. //删除所有标签
439.
440. body = body.replaceAll("<.+?>","");
441. return body;
442.// String htmlStr = body; //含html标签的字符串
443.// String textStr = "";
444.//
445.//
446.// try {
447.// //定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script> }
448.// String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";
449.// //定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style> }
450.// String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";
451.// //定义HTML标签的正则表达式
452.// String regEx_html = "<[^>]+>";
453.// //过滤script标签
454.// java.util.regex.Pattern p_script = java.util.regex.Pattern.compile(regEx_script, java.util.regex.Pattern.CASE_INSENSITIVE);
455.// java.util.regex.Matcher m_script = p_script.matcher(htmlStr);
456.// htmlStr = m_script.replaceAll("");
457.// //过滤style标签
458.// java.util.regex.Pattern p_style = java.util.regex.Pattern.compile(regEx_style, java.util.regex.Pattern.CASE_INSENSITIVE);
459.// java.util.regex.Matcher m_style = p_style.matcher(htmlStr);
460.// htmlStr = m_style.replaceAll("");
461.// //过滤html标签
462.// java.util.regex.Pattern p_html = java.util.regex.Pattern.compile(regEx_html, java.util.regex.Pattern.CASE_INSENSITIVE);
463.// java.util.regex.Matcher m_html = p_html.matcher(htmlStr);
464.// htmlStr = m_html.replaceAll("");
465.//
466.// textStr = htmlStr;
467.//
468.// } catch (Exception e) {
469.//
470.// }
471.//
472.// return textStr; //返回文本字符串
473.
474. }
475.
476. /**
477. * 返回字符串的len个字符.取前后,去掉中间 例如:输入"abcdefg",3 返回 "ab ... g".
478. * @param value String
479. * @param len int
480. * @return String
481. */
482. public static String getLmtStrx(String value, int len) {
483. if(value == null || value.length() <= len)
484. return value;
485. value = value.substring(0,len/2) + ".." + value.substring(value.length()-len/2);
486. return value;
487. }
488.
489. /**
490. * 给传入的字符串前补足'0',以使字符串长度为len。例如:输入字符串:"23",4 返回:"0023"。
491. * @param str String
492. * @param len int
493. * @return String
494. */
495. public String getZeroStr(String str, int len) {
496. int strlen = str.length();
497. for(int i = 0; i < len - strlen; i++) {
498. str = "0" + str;
499. }
500. return str;
501. }
502. /**
503. * 输入0000返回0001,输入00000001返回00000002
504. * @param rank String
505. * @return String
506. */
507. public static String createRank(String rank){
508. String prefix = null;
509. String suffix = null;
510.// System.out.println("rank"+rank);
511.// if(rank!=null&&rank.trim().endsWith("wf")){
512.// rank= rank.trim().substring(0,rank.length()-2);
513.// }
514. if (rank.trim().length() > 4) {
515. prefix = rank.substring(0, rank.length() - 4);
516. suffix = rank.substring(prefix.length());
517. long tmp = Long.parseLong(suffix);
518. tmp++;
519. int len = suffix.length();
520. suffix = new Long(tmp).toString();
521. len = len - suffix.length();
522. for (int n = 0; n < len; n++) {
523. suffix = "0" + suffix;
524. }
525. rank = prefix + suffix;
526. } else {
527. long tmp = Long.parseLong(rank);
528. tmp++;
529. int len = rank.length();
530. rank = new Long(tmp).toString();
531. len = len - rank.length();
532. for (int n = 0; n < len; n++) {
533. rank = "0" + rank;
534. }
535. }
536. return rank;
537. }
538. /**
539. * [ab][cd] - > ab;cd
540. * @param array String[]
541. * @return String
542. */
543. public static String getArrayAsString(String[] array){
544. String rs = "";
545. if(array != null){
546. for(int i =0;i < array.length;i ++){
547. rs += array[i] + ";";
548. }
549. }
550. if(rs.endsWith(";")){
551. rs = rs.substring(0,rs.length() - 1);
552. }
553. return rs;
554. }
555. /**
556. * 过滤HTML标签
557. * @param value String
558. * @return String
559. */
560. public static String filterScriptHtml(String value) {
561. if(value == null)
562. return "";
563. else {
564. value = value.replaceAll("<", "<");
565. value = value.replaceAll(">", ">");
566. }
567. return value;
568. }
569.
570. /**
571. * @param value double
572. * @param format String "0.00"
573. * @return String
574. */
575. public static String getFormatDouble(double value, String format) {
576. DecimalFormat d = new DecimalFormat(format);
577. return d.format(value);
578. }
579.
580. /**
581. * 0.34567 -> 0.35
582. * @param value double
583. * @return String
584. */
585. public static String getFormatDouble(double value) {
586. return getFormatDouble(value, "0.00");
587. }
588.
589. /**
590. * double数据类型取小数点位数
591. * @param doubleData double
592. * @param scale int
593. * @return String
594. */
595. public static String getDoubleByScale(double doubleData,int scale){
596. String strFormator = "#." + org.apache.commons.lang.StringUtils.repeat("#",scale);
597. java.text.DecimalFormat formater = new java.text.DecimalFormat(strFormator);
598. String newData = formater.format(doubleData);
599. return newData;
600. }
601.
602. /**
603. * 判断str是否在src String[]中
604. * @param src 源String[]
605. * @param str 要判断的String
606. * @return boolean
607. */
608. public static boolean isContain(String[] src, String str) {
609. if(null == src) {
610. return false;
611. }
612. for(int i = 0; i < src.length; i++) {
613. if(str.equalsIgnoreCase(src[i])) {
614. return true;
615. }
616. }
617. return false;
618. }
619.
620. /**
621. * 正则表达式判断(忽略大小写)
622. * @param target String
623. * @param regex String
624. * @return boolean
625. */
626. public static boolean isMatch(String target, String regex) {
627. PatternCompiler compiler = new Perl5Compiler();
628. Pattern pattern = null;
629. try {
630. pattern = compiler.compile(regex, Perl5Compiler.CASE_INSENSITIVE_MASK);
631. }
632. catch (Exception e) {
633. return false;
634. }
635. PatternMatcher patternMatcher = new Perl5Matcher();
636. return patternMatcher.matches(target, pattern);
637. }
638. /**
639. * 产生一个随机id,这个id以系统时间开头
640. * @return String
641. */
642. public static String createId() {
643. //System.out.println(System.currentTimeMillis());
644. String c = "" + getCount();
645. if (c.length() == 1) {
646. c = "0" + c;
647. }
648. String id = System.currentTimeMillis() + c;
649. int len = 32 - id.length();
650.
651. return id + org.apache.commons.lang.RandomStringUtils.randomAlphanumeric(len);
652. }
653.
654. private static int counter = 0;
655.
656. protected static int getCount() {
657. synchronized (StringUtils.class) {
658. if (counter < 0) {
659. counter = 0;
660.
661. }
662. counter++;
663. if (counter == 99) {
664. counter = 0;
665. }
666. return counter;
667. }
668. }
669.
670. public static void main(String[] args){
671. //String b[] = null;
672. ///System.out.print( getArrayAsString(b));
673. String a = org.trundle.common.FileUtils.read("C:\\Documents and Settings\\admin\\桌面\\aa.txt");
674.// String abc = " <SPAN lang=EN-US style=\"FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt\">2003年12月4日<SPAN lang=EN-US style=\"FONT-SIZE:ze:中午 9.0pt\">";
675. System.out.print(getCleanString(a));
676.// String you你好 = "你好";
677.// System.out.println(you你好);
678.// abc = "AA&bb+CC&cc";
679.// String[] b = abc.split("\\+");
680.// System.out.println(b[0]);
681.
682. System.out.println(getFormatDouble(4.45,"0"));
683. System.out.println(createRank("00000005"));
684.
685. }
686.}
今天先整理下自己常用的一些字符串常用类:
Java代码
1.import java.io.*;
2.import java.text.DecimalFormat;
3.import org.apache.oro.text.regex.PatternCompiler;
4.import org.apache.oro.text.regex.PatternMatcher;
5.import org.apache.oro.text.regex.Perl5Matcher;
6.import org.apache.oro.text.regex.Pattern;
7.import org.apache.oro.text.regex.Perl5Compiler;
8.
9.import org.apache.commons.logging.Log;
10./**
11. * <p>Title: StringUtils</p>
12. * <p>Description: 字符串工具类; 配合JakartaCommons工具类使用;</p>
13. * <p>Copyright: Copyright (c) 2003</p>
14. * <p>Company: pubinfo</p>
15. * @author chineseren
16. * @version 1.0
17. */
18.public class StringUtils {
19. /**
20. * debug log
21. */
22. private static Log log = Debuger.getDebuger(StringUtils.class);
23. /**
24. * String charSet 转化
25. * @param str String
26. * @return String
27. */
28. public static String toChinese(String str) {
29. if(str == null || str.length() == 0) {
30. return "";
31. }
32. try {
33. return new String(str.getBytes("ISO8859_1"), "GBK");
34. } catch(UnsupportedEncodingException ex) {
35. return str;
36. }
37. }
38.
39. /**
40. * 判断字符串是否null或者""
41. * @param src String
42. * @return boolean
43. */
44. public static boolean isBlank(String src) {
45. if(null == src || "".equals(src.trim())) {
46. return true;
47. }
48. return false;
49. }
50.
51. /**
52. * @param string - 待判断的字符串是否为null或者空字符串
53. * @return boolean
54. * @roseuid 3FBE26DE0326
55. */
56. public static boolean isNullOrEmpty(String string) {
57. if(string == null || string.trim().equals("")) {
58. return true;
59. } else {
60. return false;
61. }
62. }
63.
64. /**
65. * 把没有实例化的串转化为空串
66. * @param p_in String
67. * @return String
68. */
69. public static String convertNull(String str) {
70. if(str == null) {
71. return "";
72. } else {
73. return str;
74. }
75. }
76.
77. /**
78. * 控制页面显示长度,dataStr为控制长度的字符串,length为字节的长度;
79. * 字符串的字节长度小于显示长度,则原样输出,否则以XXX...的形式输出。
80. * @param dataStr String
81. * @param length int
82. * @return String
83. */
84. public static String controlLength(String dataStr, int length) {
85. if(dataStr == null) {
86. return "";
87. }
88. //转化成格式化的Html
89. dataStr = StringUtils.escape(dataStr);
90.
91. StringBuffer sb = new StringBuffer();
92. char datach;
93. int lengthi = 0; //字符串的字节长度
94. int strj = 0; //字符串的实际长度
95. int lengthi3 = 0; //字节长度-4
96. //得到字符串的字节长度
97. while(strj < dataStr.length()) {
98. datach = dataStr.charAt(strj++);
99. if(((datach <= 'z') && (datach >= 'a'))
100. || ((datach <= 'Z') && (datach >= 'A'))
101. || ((datach <= '9') && (datach >= '0'))) {
102. lengthi++;
103. } else {
104. lengthi = lengthi + 2;
105. }
106. }
107. strj = 0;
108. //得到字符串的字节长度-4
109. while((lengthi3 < length - 4) && (strj < dataStr.length())) {
110. datach = dataStr.charAt(strj++);
111. sb.append(datach);
112. if(((datach <= 'z') && (datach >= 'a'))
113. || ((datach <= 'Z') && (datach >= 'A'))
114. || ((datach <= '9') && (datach >= '0'))) {
115. lengthi3++;
116. } else {
117. lengthi3 = lengthi3 + 2;
118. }
119. }
120. if(lengthi <= length) {
121. return dataStr;
122. } else {
123. sb.append("...");
124. }
125. return sb.toString();
126. }
127.
128. /**
129. * 把字符串转化成HTML字符串
130. * @param str --需要转换的字符串
131. * @return String --返回把特殊字符转换了的字符串
132. */
133. public static String escape(String str) {
134. if(str == null) {
135. return "";
136. }
137. byte[] data = str.getBytes();
138. int len = data.length;
139. StringBuffer result = new StringBuffer(len * 2);
140.
141. int begin = 0, count = 0, tt = 0;
142. for(int i = 0; i < len; i++) {
143. switch((char)data[i]) {
144. case '&':
145. result.append(new String(data, begin, count));
146. result.append("&");
147. begin = i + 1;
148. count = 0;
149. break;
150. case '\"':
151. result.append(new String(data, begin, count));
152. result.append(""");
153. begin = i + 1;
154. count = 0;
155. break;
156. case '<':
157. result.append(new String(data, begin, count));
158. result.append("<");
159. begin = i + 1;
160. count = 0;
161. break;
162. case '>':
163. result.append(new String(data, begin, count));
164. result.append(">");
165. begin = i + 1;
166. count = 0;
167. break;
168. case '\n':
169. result.append(new String(data, begin, count));
170. result.append("<br>");
171. begin = i + 1;
172. count = 0;
173. break;
174. case '$':
175. result.append(new String(data, begin, count));
176. result.append("$$");
177. begin = i + 1;
178. count = 0;
179. break;
180. case ' ':
181. result.append(new String(data, begin, count));
182. result.append(" ");
183. begin = i + 1;
184. count = 0;
185. break;
186. default:
187. count++;
188. break;
189. }
190. }
191. if(count > 0) {
192. result.append(new String(data, begin, count));
193. }
194. return result.toString();
195. }
196.
197.
198. /**
199. * 把字符串转化成HTML字符串(除了空格)
200. * @param str --需要转换的字符串
201. * @return String --返回把特殊字符转换了的字符串
202. */
203. public static String escape2(String str) {
204. if(str == null) {
205. return "";
206. }
207. byte[] data = str.getBytes();
208. int len = data.length;
209. StringBuffer result = new StringBuffer(len * 2);
210.
211. int begin = 0, count = 0, tt = 0;
212. for(int i = 0; i < len; i++) {
213. switch((char)data[i]) {
214. case '&':
215. result.append(new String(data, begin, count));
216. result.append("&");
217. begin = i + 1;
218. count = 0;
219. break;
220. case '\"':
221. result.append(new String(data, begin, count));
222. result.append(""");
223. begin = i + 1;
224. count = 0;
225. break;
226. case '<':
227. result.append(new String(data, begin, count));
228. result.append("<");
229. begin = i + 1;
230. count = 0;
231. break;
232. case '>':
233. result.append(new String(data, begin, count));
234. result.append(">");
235. begin = i + 1;
236. count = 0;
237. break;
238. case '\n':
239. result.append(new String(data, begin, count));
240. result.append("<br>");
241. begin = i + 1;
242. count = 0;
243. break;
244. case '$':
245. result.append(new String(data, begin, count));
246. result.append("$$");
247. begin = i + 1;
248. count = 0;
249. break;
250. default:
251. count++;
252. break;
253. }
254. }
255. if(count > 0) {
256. result.append(new String(data, begin, count));
257. }
258. return result.toString();
259. }
260.
261.
262. /**
263. * 将textarea输入的文本转化成前台html显示的格式,主要将回车(/r/n)替换成<br>," "替换成
264. * @param text String
265. * @return String
266. */
267. public static String textConvertToHtmlText(String text){
268. if(text != null){
269. return text.replaceAll("\r\n", "<br>").replaceAll(" ", " ");
270. }else{
271. return null;
272. }
273. }
274. /**
275. * 全数字判断
276. * @param strIn String
277. * @return boolean
278. */
279. public static boolean isNumberString(String strIn) {
280. return isNumberString(strIn, "0123456789");
281. }
282.
283. /**
284. * 全数字判断,参照字符串strRef可以是:"0123456789","23546"或"0123"等等。
285. * @param strIn String
286. * @param strRef String
287. * @return boolean
288. */
289. public static boolean isNumberString(String strIn, String strRef) {
290. if(strIn == null || strIn.length() == 0)
291. return(false);
292. for(int i = 0; i < strIn.length(); i++) {
293. String strTmp = strIn.substring(i, i + 1);
294. if(strRef.indexOf(strTmp, 0) == -1)
295. return(false);
296. }
297. return(true);
298. }
299.
300. /**
301. * 字符串替换,调用了org.apache.commons.lang.StringUtils.replace()
302. * @param strObj 目标字符串
303. * @param str1 被替换的字符串
304. * @param str2 替换成的字符串
305. * @return String
306. */
307. public static String replace(String strObj, String str1, String str2) {
308. if("".equals(str1)) {
309. return strObj;
310. }
311. return org.apache.commons.lang.StringUtils.replace(strObj, str1, str2);
312. }
313. /**
314. * 根据内容生成摘要
315. * @param content String
316. * @return String
317. */
318. public static String createSummary(String content){
319. if(content == null)return null;
320. String regexp = "<.*?>";
321. //System.out.println(regexp);
322. content = content.replaceAll(regexp,"");
323. int len = content.length();
324. if(len > 120){
325. return content.substring(0, 120);
326. }else{
327. return content;
328. }
329. }
330.
331. /**
332. * 字符串切割,比如"#sd#kf##dkf##Ej#"按照"#"切割之后length=8,即"#"出现的次数加一
333. * @param strObj 目标字符串
334. * @param str1 用于切割的字符串
335. * @return String[]
336. */
337. public static String[] split(String strObj, String delimiter) {
338. if(strObj == null) {
339. return null;
340. }
341. if("".equals(strObj) || "".equals(delimiter)) {
342. return new String[] {
343. strObj};
344. }
345.
346. int count = org.apache.commons.lang.StringUtils.countMatches(strObj,
347. delimiter) + 1; //调用org.apache.commons
348. int length = delimiter.length();
349. String[] strs = new String[count];
350. int posPre = 0 - length;
351. int pos = 0;
352. for(int i = 0; i < count - 1; i++) {
353. pos = strObj.indexOf(delimiter, posPre + length);
354. strs[i] = strObj.substring(posPre + length, pos);
355. posPre = pos;
356. }
357. strs[count - 1] = strObj.substring(posPre + length);
358. return strs;
359. }
360.
361. /**
362. * 用于转义单斜杠特殊字符
363. * @param str String
364. * @return String
365. */
366. public static final String appendStr(String str) {
367. char c = ' ';
368. StringBuffer sb = new StringBuffer();
369. for(int i = 0; i < str.length(); i++) {
370. c = str.charAt(i);
371. if(c == '\\') {
372. sb.append("\\\\");
373. } else {
374. sb.append(c);
375. }
376. }
377. return sb.toString();
378. }
379.
380. /**
381. * 将reader流中的数据变成String
382. * @param is reader流
383. * @return String
384. * @throws IOException
385. */
386. public static String readerToString(Reader is) throws IOException {
387. StringBuffer sb = new StringBuffer();
388. char[] b = new char[8192];
389. int n;
390. while((n = is.read(b)) > 0) {
391. sb.append(b, 0, n);
392. }
393. return sb.toString();
394. }
395.
396. /**
397. * 将input流中的数据变成String
398. * @param is InputStream流
399. * @throws IOException
400. * @return String
401. */
402. public static String inputStreamToString(InputStream is) throws IOException {
403. return readerToString(new InputStreamReader(is));
404. }
405.
406. /**
407. * 返回字符串的前len个字符.例如:输入"abcdefg",3 返回 "abc".
408. * @param value String
409. * @param len int
410. * @return String
411. */
412. public static String getLmtStr(String value, int len) {
413. if(value == null || value.length() <= len)
414. return value;
415. return value.substring(0, len);
416. }
417. /**
418. * 返回字符串的前len个字符.例如:输入"abcdefg",3 返回 "abc...".
419. * @param value String
420. * @param len int
421. * @return String
422. */
423. public static String getLmtString(String value, int len) {
424. if(value == null || value.length() <= len)
425. return value;
426. return value.substring(0, len) + "...";
427. }
428. /**
429. * 输入带html标签的字符串,返回干净的字符串,其中将( ->" "),(<br>->\r\n),(<p>->\r\n\r\n)
430. * @param body String
431. * @return String
432. */
433. public static String getCleanString(String body) {
434. //替换 ->" ",<br>->\r\n <p>->\r\n\r\n
435. body = body.replaceAll("&[nN][bB][sS][pP];"," ");
436. body = body.replaceAll("<[bB][rR]\\s*>","\r\n");
437. body = body.replaceAll("<[pP]\\s*>","\r\n\r\n");
438. //删除所有标签
439.
440. body = body.replaceAll("<.+?>","");
441. return body;
442.// String htmlStr = body; //含html标签的字符串
443.// String textStr = "";
444.//
445.//
446.// try {
447.// //定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script> }
448.// String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";
449.// //定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style> }
450.// String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";
451.// //定义HTML标签的正则表达式
452.// String regEx_html = "<[^>]+>";
453.// //过滤script标签
454.// java.util.regex.Pattern p_script = java.util.regex.Pattern.compile(regEx_script, java.util.regex.Pattern.CASE_INSENSITIVE);
455.// java.util.regex.Matcher m_script = p_script.matcher(htmlStr);
456.// htmlStr = m_script.replaceAll("");
457.// //过滤style标签
458.// java.util.regex.Pattern p_style = java.util.regex.Pattern.compile(regEx_style, java.util.regex.Pattern.CASE_INSENSITIVE);
459.// java.util.regex.Matcher m_style = p_style.matcher(htmlStr);
460.// htmlStr = m_style.replaceAll("");
461.// //过滤html标签
462.// java.util.regex.Pattern p_html = java.util.regex.Pattern.compile(regEx_html, java.util.regex.Pattern.CASE_INSENSITIVE);
463.// java.util.regex.Matcher m_html = p_html.matcher(htmlStr);
464.// htmlStr = m_html.replaceAll("");
465.//
466.// textStr = htmlStr;
467.//
468.// } catch (Exception e) {
469.//
470.// }
471.//
472.// return textStr; //返回文本字符串
473.
474. }
475.
476. /**
477. * 返回字符串的len个字符.取前后,去掉中间 例如:输入"abcdefg",3 返回 "ab ... g".
478. * @param value String
479. * @param len int
480. * @return String
481. */
482. public static String getLmtStrx(String value, int len) {
483. if(value == null || value.length() <= len)
484. return value;
485. value = value.substring(0,len/2) + ".." + value.substring(value.length()-len/2);
486. return value;
487. }
488.
489. /**
490. * 给传入的字符串前补足'0',以使字符串长度为len。例如:输入字符串:"23",4 返回:"0023"。
491. * @param str String
492. * @param len int
493. * @return String
494. */
495. public String getZeroStr(String str, int len) {
496. int strlen = str.length();
497. for(int i = 0; i < len - strlen; i++) {
498. str = "0" + str;
499. }
500. return str;
501. }
502. /**
503. * 输入0000返回0001,输入00000001返回00000002
504. * @param rank String
505. * @return String
506. */
507. public static String createRank(String rank){
508. String prefix = null;
509. String suffix = null;
510.// System.out.println("rank"+rank);
511.// if(rank!=null&&rank.trim().endsWith("wf")){
512.// rank= rank.trim().substring(0,rank.length()-2);
513.// }
514. if (rank.trim().length() > 4) {
515. prefix = rank.substring(0, rank.length() - 4);
516. suffix = rank.substring(prefix.length());
517. long tmp = Long.parseLong(suffix);
518. tmp++;
519. int len = suffix.length();
520. suffix = new Long(tmp).toString();
521. len = len - suffix.length();
522. for (int n = 0; n < len; n++) {
523. suffix = "0" + suffix;
524. }
525. rank = prefix + suffix;
526. } else {
527. long tmp = Long.parseLong(rank);
528. tmp++;
529. int len = rank.length();
530. rank = new Long(tmp).toString();
531. len = len - rank.length();
532. for (int n = 0; n < len; n++) {
533. rank = "0" + rank;
534. }
535. }
536. return rank;
537. }
538. /**
539. * [ab][cd] - > ab;cd
540. * @param array String[]
541. * @return String
542. */
543. public static String getArrayAsString(String[] array){
544. String rs = "";
545. if(array != null){
546. for(int i =0;i < array.length;i ++){
547. rs += array[i] + ";";
548. }
549. }
550. if(rs.endsWith(";")){
551. rs = rs.substring(0,rs.length() - 1);
552. }
553. return rs;
554. }
555. /**
556. * 过滤HTML标签
557. * @param value String
558. * @return String
559. */
560. public static String filterScriptHtml(String value) {
561. if(value == null)
562. return "";
563. else {
564. value = value.replaceAll("<", "<");
565. value = value.replaceAll(">", ">");
566. }
567. return value;
568. }
569.
570. /**
571. * @param value double
572. * @param format String "0.00"
573. * @return String
574. */
575. public static String getFormatDouble(double value, String format) {
576. DecimalFormat d = new DecimalFormat(format);
577. return d.format(value);
578. }
579.
580. /**
581. * 0.34567 -> 0.35
582. * @param value double
583. * @return String
584. */
585. public static String getFormatDouble(double value) {
586. return getFormatDouble(value, "0.00");
587. }
588.
589. /**
590. * double数据类型取小数点位数
591. * @param doubleData double
592. * @param scale int
593. * @return String
594. */
595. public static String getDoubleByScale(double doubleData,int scale){
596. String strFormator = "#." + org.apache.commons.lang.StringUtils.repeat("#",scale);
597. java.text.DecimalFormat formater = new java.text.DecimalFormat(strFormator);
598. String newData = formater.format(doubleData);
599. return newData;
600. }
601.
602. /**
603. * 判断str是否在src String[]中
604. * @param src 源String[]
605. * @param str 要判断的String
606. * @return boolean
607. */
608. public static boolean isContain(String[] src, String str) {
609. if(null == src) {
610. return false;
611. }
612. for(int i = 0; i < src.length; i++) {
613. if(str.equalsIgnoreCase(src[i])) {
614. return true;
615. }
616. }
617. return false;
618. }
619.
620. /**
621. * 正则表达式判断(忽略大小写)
622. * @param target String
623. * @param regex String
624. * @return boolean
625. */
626. public static boolean isMatch(String target, String regex) {
627. PatternCompiler compiler = new Perl5Compiler();
628. Pattern pattern = null;
629. try {
630. pattern = compiler.compile(regex, Perl5Compiler.CASE_INSENSITIVE_MASK);
631. }
632. catch (Exception e) {
633. return false;
634. }
635. PatternMatcher patternMatcher = new Perl5Matcher();
636. return patternMatcher.matches(target, pattern);
637. }
638. /**
639. * 产生一个随机id,这个id以系统时间开头
640. * @return String
641. */
642. public static String createId() {
643. //System.out.println(System.currentTimeMillis());
644. String c = "" + getCount();
645. if (c.length() == 1) {
646. c = "0" + c;
647. }
648. String id = System.currentTimeMillis() + c;
649. int len = 32 - id.length();
650.
651. return id + org.apache.commons.lang.RandomStringUtils.randomAlphanumeric(len);
652. }
653.
654. private static int counter = 0;
655.
656. protected static int getCount() {
657. synchronized (StringUtils.class) {
658. if (counter < 0) {
659. counter = 0;
660.
661. }
662. counter++;
663. if (counter == 99) {
664. counter = 0;
665. }
666. return counter;
667. }
668. }
669.
670. public static void main(String[] args){
671. //String b[] = null;
672. ///System.out.print( getArrayAsString(b));
673. String a = org.trundle.common.FileUtils.read("C:\\Documents and Settings\\admin\\桌面\\aa.txt");
674.// String abc = " <SPAN lang=EN-US style=\"FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt\">2003年12月4日<SPAN lang=EN-US style=\"FONT-SIZE:ze:中午 9.0pt\">";
675. System.out.print(getCleanString(a));
676.// String you你好 = "你好";
677.// System.out.println(you你好);
678.// abc = "AA&bb+CC&cc";
679.// String[] b = abc.split("\\+");
680.// System.out.println(b[0]);
681.
682. System.out.println(getFormatDouble(4.45,"0"));
683. System.out.println(createRank("00000005"));
684.
685. }
686.}
相关推荐
工作5年精心整理_Java常用工具类源码 收集了java项目开中常用的工具操作类,方法非常全,可应用在大部份java 项目中。 提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档...
提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...
详细介绍了java语言中常用的字符串的基本操作。
整理的数据库连接字符串,sqlserver oracle mysql 都有
主要介绍了Java编程中字符串的常用操作方法的整理,字符串处理是Java入门学习中的基础知识,需要的朋友可以参考下
自己整理的java常用的工具类,字符串、日期,文件,连接多个数据库,MD5,ftp二进制与ascii传输方式区别,日志管理等等等常用类处理
华为JAVA上机考试整理 2018,里面包含了很多常用的算法,字符,数组等的操作,对网络上的各大资源都进行了整合。
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...
对于日期,随机字符,时间差计算,拼音转换,金额计算转换,网络图片保存,身份证出生日期获取,字符串首字母获取,年月加减计算等
StreamUtils 流转换成字符串 StringUtils String SystemUtils 线程池工具类 TimeUtils TimeUtils ToastUtils ToastUtils TransitionTime 用来计算显示的时间是多久之前 ViewAnimationUtils 视图动画工具箱,提供简单...
该类是本人在实际项目开发过程中整理和积累出来的,包括对字符串、时间等的各种处理,绝对物有所值!
某前辈积累的代码整理,包括字符串解析 数据库连接 正则 访问xml 还有些小算法等
7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通...
1.document.write(""); 输出语句 ...10.JS中的取字符串长度是:(length) 11.JS中的字符与字符相连接使用+号. 12.JS中的比较操作符有:==等于,!=不等于,>,>=, 13.JS中声明变量使用:var来进行声明 .....
实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用字符串构建器追加字符 100 实例081 去掉...
#这个是我自己收集整理的一些常用的工具类##有好的工具类,欢迎提交PR 作者微博: ##增加常用库的README_LIB 内容说明 工具 描述 动画工具类 APP相关信息工具类 目录资源获取 加密 获取Bitmap和对Bitmap的操作 ...
此文档是xmind格式,内容包括java基础的知识整理,内容包括java的由来、java环境配置、变量和运算符、流程控制、数组与字符串、面向对象、I/O、常用类、线程