日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

No1_6.字符串的基本操作2_Java学习笔记

發(fā)布時間:2023/11/29 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 No1_6.字符串的基本操作2_Java学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 import java.util.Scanner; 2 import java.util.regex.Pattern; 3 4 public class HelloString2 { 5 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 /******************* 9 *一、正則表達(dá)式:對輸入的數(shù)據(jù)格式進(jìn)行檢查 10 *1.對輸入的格式進(jìn)行驗證,頁面上的一般用java 還是 js? 11 *答:一般前端做做驗證,后臺稍作驗證即可。 12 *如果數(shù)據(jù)很關(guān)鍵,安全性很關(guān)鍵,那么后端就必須做非常完備的數(shù)據(jù)驗證,而且還要采取其他一些防范措施來避免 13 *(或者確切地說減少可能性)SQL注入、跨站腳本攻擊、CSRF(跨站請求偽造)、緩沖區(qū)溢出等等攻擊。 14 *2.可以使用String類的matches()方法進(jìn)行判斷。boolean matches(String regex) 15 *3. 16 */ 17 18 //正則表達(dá)式中的元字符 19 /* 20 . 代表任意一個字符 21 \d 任何一個數(shù)字,等價于[0-9]或[0123456789] 22 \D 任何一個非數(shù)字,等價于[^0-9]或[^0123456789] 23 \w 任何一個字母(不區(qū)分大小寫)、數(shù)字、下劃線,等價于[0-9a-zA-Z_] 24 \W 任何一個非字母數(shù)字和下劃線,等價于[^0-9a-zA-Z_] 25 \s 任何一下空白字符,等價于[\f\n\r\t\v] 26 \S 任何一下空白字符,等價于[^\f\n\r\t\v] 27 \p{Upper} 大寫字母字符:[A-Z] 28 \p{Lower} 小寫字母字符:[a-z] 29 \p{ASCII} 所有 ASCII:[\x00-\x7F] 30 \p{Alpha} 字母字符:[\p{Lower}\p{Upper}] 31 \p{Digit} 十進(jìn)制數(shù)字:[0-9] 32 \p{Alnum} 字母數(shù)字字符:[\p{Alpha}\p{Digit}] 33 \p{Punct} 標(biāo)點(diǎn)符號:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 34 \p{Graph} 可見字符:[\p{Alnum}\p{Punct}] 35 \p{Print} 可打印字符:[\p{Graph}\x20] 36 \p{Blank} 空格或制表符:[ \t] 37 \p{Cntrl} 控制字符:[\x00-\x1F\x7F] 38 \p{Space} 空白字符:[ \t\n\x0B\f\r] 39 \p{XDigit} 十六進(jìn)制數(shù)字:[0-9a-fA-F] 40 */ 41 System.out.println("正則表達(dá)式 開始啦啦啦\n"); 42 //例一:判斷指定字符是否合法,要求字符串由7個數(shù)字組成,并且第一位必須是大寫字母,2~4位是小寫字母,后3位是數(shù)字,輸出結(jié)果。 43 System.out.println("例一:判斷指定字符是否合法,要求字符串由7個數(shù)字組成,并且第一位必須是大寫字母,2~4位是小寫字母,后3位是數(shù)字,輸出結(jié)果。"); 44 String s1="Lyqm887"; 45 String s2="hiGirl6"; 46 boolean bn1=s1.matches("\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\d\\d\\d"); 47 boolean bn2=s2.matches("\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\d\\d\\d"); 48 System.out.println(s1+"是合法數(shù)據(jù)嗎?"+bn1); 49 System.out.println(s2+"是合法數(shù)據(jù)嗎?"+bn2); 50 //正則表達(dá)式中的限定符 51 /* 52 ? 0次或1次 53 * 0次或多次 54 + 0次或多次 55 {n} 正好出現(xiàn)n次 56 {n,} 至少出現(xiàn)n次 57 {n,m} 出現(xiàn)n~m次 58 */ 59 //例二:例一的正則表達(dá)式簡化 60 System.out.println("\n例二:例一的正則表達(dá)式簡化"); 61 boolean bn3=s2.matches("\\p{Upper}\\p{Lower}{3}\\d{3}"); 62 System.out.println(s1+"是合法數(shù)據(jù)嗎?"+bn3); 63 64 //例三:判斷變量是否是合法的email地址 65 System.out.println("\n例三:判斷變量是否是合法的email地址"); 66 String s3="yjgogjge@163.com"; 67 String s4="@163.com"; 68 String s5="yjgogjge@."; 69 String regex="\\w{1,}\\@{1}\\w{0,}\\.{1}\\w{1,}"; 70 if(s3.matches(regex)){ 71 System.out.println(s3+"是一個合法的Email地址~"); 72 } 73 if(s4.matches(regex)){ 74 System.out.println(s4+"是一個合法的Email地址~"); 75 } 76 if(s5.matches(regex)){ 77 System.out.println(s5+"是一個合法的Email地址~"); 78 } 79 //方括號中元字符的含義 80 /* 81 [abc] a、b或者 82 [^abc] a、b、c之外的任何字符 83 [a-zA-Z] a-z或A-Z的任何字符 84 [a-d[m-p]] a-d或m-p的任何字符 85 [a-z&&[def]] d、e、f 86 [a-z&&[^bc]] a-z之間不包含b、c的所有字符 87 [a-z&&[^m-p]] a-z之間不包含m-p的所有字符 88 */ 89 90 //例四:對手機(jī)號碼的合法性進(jìn)行驗證 91 System.out.println("\n例四:對手機(jī)號碼的合法性進(jìn)行驗證"); 92 Scanner s= new Scanner(System.in); 93 System.out.println("請輸入手機(jī)號,驗證一下你輸入的是否合法?"); 94 //String tel1=s.nextLine(); 95 String tel1="15510168888"; 96 System.out.println(checkTel(tel1)); 97 98 //例五:驗證ip地址的合法性 99 System.out.println("\n例五:驗證ip地址的合法性"); 100 System.out.println("請輸入IP地址,驗證一下是否合法?"); 101 //String ip1=s.nextLine(); 102 String ip1="1.1.1.1"; 103 System.out.println(checkIPAdress(ip1)); 104 105 //例六:計算文章中漢字的個數(shù) 106 System.out.println("\n例六:計算文章中漢字的個數(shù)"); 107 String text="The secret of success is constancy to purpose.成功的秘訣在于對目標(biāo)的忠實(shí)。不破不立,嘗試改變一下自己~"; 108 int amount=0; 109 110 for(int i=0;i<text.length();i++){ 111 //System.out.println(text.charAt(i));可以獲取每個字符 112 String chineseRegex="^[\u4e00-\u9fa5]{0,}$"; 113 boolean matches=Pattern.matches(chineseRegex, ""+text.charAt(i)); //有時間可以查一下patter類的用法 114 if (matches){ 115 amount++; 116 } 117 } 118 System.out.println(text+"\n上段話中中有幾個漢字:"+amount); 119 120 /******************************** 121 * 二、字符串生成器 122 * StringBuilder類,是字符串一個重要的常用類,且節(jié)省程序運(yùn)行時間; 123 * 初始容量是16個字符,可以自行指定初始長度 124 * 可以動態(tài)執(zhí)行添加、刪除、插入字符串 125 * ******************************************/ 126 //例一:通過實(shí)例對比String和StringBuilder在對字符串做更新操作時所用的時間差別 127 System.out.println("\n"); 128 System.out.println("例一:通過實(shí)例對比String和StringBuilder在對字符串做更新操作時所用的時間差別:"); 129 130 String str=""; 131 long startTime=System.currentTimeMillis(); // 定義執(zhí)行操作的起始時間 132 for(long m=0;m<10000;m++){ 133 str=str+m; 134 } 135 long endTime=System.currentTimeMillis(); 136 long time=endTime-startTime; 137 System.out.println("String消耗時間是:"+time); 138 139 140 StringBuilder builder=new StringBuilder(""); 141 startTime=System.currentTimeMillis(); 142 for(long n=0;n<10000;n++){ 143 builder.append(n); 144 } 145 endTime=System.currentTimeMillis(); 146 time=endTime-startTime; 147 System.out.println("StringBuilder消耗時間是:"+time); 148 149 //例二:將參數(shù)str指定的字符串追加到字符串生成器中,可以追加任何類型喲,包括sb類型: StringBuilder.append(String str) 150 System.out.println("\n例二:將參數(shù)str指定的字符串追加到字符串生成器中"); 151 String myDream="可以做自己喜歡的做的事情~"; 152 boolean mySex=true; 153 StringBuilder builder1=new StringBuilder("My dream is "); 154 builder1.append(myDream); 155 builder1.append(mySex); 156 StringBuilder sb=new StringBuilder("\n不破不立~專心學(xué)習(xí)!!!"); 157 builder1.append(sb); 158 System.out.println("追加后builder1的值是:"+builder1); 159 160 //例三:將參數(shù)指定的字符串str添加到offset指定的位置 StringBuilder insert(int offset,String str) 161 System.out.println("\n例三:將參數(shù)指定的字符串str添加到offset指定的位置"); 162 StringBuilder sb1=new StringBuilder("I you!"); 163 sb1.insert(2, "miss"); 164 System.out.println("我又想到你了..."+sb1); 165 166 //例四:移除字符串生成器中的子字符串,從指定的start處開始,到指定的end處結(jié)束; 167 //StringBuilder.delete(int start,String end) 168 System.out.println("\n例四:移除字符串生成器中的子字符串"); 169 StringBuilder sb2=new StringBuilder("因為喜歡,你讓我想成為更好的自己!"); 170 System.out.println("原字符串是:"+sb2); 171 sb2.delete(0, 5); 172 System.out.println("移除字符串后是:"+sb2); 173 174 //例五:將字符串生成器轉(zhuǎn)換為字符串,轉(zhuǎn)換后值不變 StringBuilder.toString() 175 System.out.println("\n例六:將字符串生成器轉(zhuǎn)換為字符串"); 176 StringBuilder sb3=new StringBuilder("我們總是喜歡拿“順其自然”來敷衍人生道路上的荊棘坎坷," 177 + "\n卻很少承認(rèn),真正的順其自詹,其實(shí)是竭盡所能之后的不強(qiáng)求,而非兩手一攤的不作為。 by瑞卡斯"); 178 String wordsLike=sb3.toString(); 179 System.out.println(wordsLike); 180 181 //例七:將漢字和字母轉(zhuǎn)換成Unicode碼 182 System.out.println("\n例七:將漢字和字母轉(zhuǎn)換成Unicode碼"); 183 String strUnicode="我想見你時,能不能不管你加不加班,想不想見我。。。好像不能呢~~~"; 184 char[] charArray=strUnicode.toCharArray(); 185 StringBuilder sb4=new StringBuilder(); 186 for(char c:charArray){ 187 sb4.append((int)c+" "); 188 } 189 System.out.println(strUnicode+"\n的Unicode碼是:\n"+sb4); 190 191 192 //范例八:去掉字符串中重復(fù)的字符 193 System.out.println("\n范例八:去掉字符串中重復(fù)的字符"); 194 String s8="再見了,互相嫌棄的老同學(xué),再見了,來不及說出的謝謝。"; 195 StringBuilder sb5=new StringBuilder(s8); 196 System.out.println("原來的字符串是:"+sb5); 197 System.out.println("原來的字符串長度是:"+sb5.length()); 198 for(int j=0;j<sb5.length();j++){ 199 for(int k=j+1;k<sb5.length();k++){ 200 if(sb5.charAt(j)==sb5.charAt(k)) 201 sb5.deleteCharAt(k); 202 } 203 } 204 System.out.println("現(xiàn)在的字符串是:"+sb5); 205 System.out.println("現(xiàn)在的字符串長度是:"+sb5.length()); 206 207 208 //經(jīng)典范例九:實(shí)現(xiàn)字符串加密 209 //最常用的:獲取字符串的字節(jié)數(shù)組,再對字節(jié)數(shù)組中的每個字符進(jìn)行操作,加密;對字符串進(jìn)行相反運(yùn)算,解密。 210 System.out.println("\n經(jīng)典范例九:實(shí)現(xiàn)字符串加密"); 211 String value="就像我說大海很漂亮,你卻說淹死過很多人"; 212 char secret='晴'; 213 System.out.println("原字符串是:"+value); 214 String encrypt=encryption(value,secret); 215 System.out.println("加密后的字符串是:"+encrypt); 216 String uncrypt=encryption(encrypt,secret); 217 System.out.println("解密后的字符串是:"+uncrypt); 218 219 220 //經(jīng)典范例十:驗證字符串是否是回文:即從前往后讀和從后往前讀一樣; 221 System.out.println("\n經(jīng)典范例十:驗證字符串是否是回文"); 222 //StringBuilder line=new StringBuilder("上海自來,水來自海上"); 223 String line="上海自來水來自海上"; 224 System.out.println("原始字符串是:"+line); 225 StringBuilder line2=new StringBuilder(line); 226 line2 =line2.reverse();//字符串生成器中字符反轉(zhuǎn),如果直接用StringBuffer類型的line轉(zhuǎn)換,line和line2的存儲長度是一樣的。。。 227 /**************** 228 * 備注一下原理:StringBuffer 和StringBuilder 節(jié)省內(nèi)存的原理,在于拼接字符串的時候本身的對象不變, 229 * 一直在變的是數(shù)組對象,通過不斷的復(fù)制生成新的數(shù)組對象,達(dá)到拼接字符串, 230 * 而StringBuffer和StringBuilder的代碼邏輯一模一樣,只是StringBuffer所有的方法都加了cynchronized,所以是線程安全的。 231 */ 232 //line2=line2.append("喂~"); 233 System.out.println("返轉(zhuǎn)后的字符串是:"+line2); 234 int count=0; 235 if( line.length() != line2.length()){ 236 System.out.println(line+":不是回文詩呵呵"); 237 }else{ 238 for(int y=0;y<line2.length();y++){ 239 240 if(line.charAt(y)==line2.charAt(y)){ 241 count++; 242 } 243 else{ 244 System.out.println(line+":不是回文詩"); 245 break; 246 }//分支結(jié)束 247 248 }//循環(huán)結(jié)束 249 250 }//外層分支結(jié)束 251 if(count==line.length()){ 252 System.out.println(line+":是回文詩~~~~"); 253 } 254 255 //實(shí)戰(zhàn)開始 256 /************************ 257 * 1.創(chuàng)建Number類,判斷字符串""中字符'i'出現(xiàn)了幾次,并輸出結(jié)果 258 * 2.去除字符串中的所有空格的方法,試著用for循環(huán)和if條件語句實(shí)現(xiàn)去除空格 259 * 3.在項目中創(chuàng)建DateAndTime類,將今天的全部信息格式化后輸出,再將日期以“年-月-日”的格式輸出 260 */ 261 //實(shí)戰(zhàn)一 262 System.out.println("1.創(chuàng)建Number類,判斷字符串\"\"中字符'i'出現(xiàn)了幾次,并輸出結(jié)果"); 263 264 265 266 } 267 268 269 /***********************以下是函數(shù)********************************/ 270 // 例四:對手機(jī)號碼的合法性進(jìn)行驗證(前兩位是13、15、18,共11位) 271 public static String checkTel(String str) { 272 String telRegex = "1[5,3,8]\\d{9}$"; 273 if (str.matches(telRegex)) { 274 return str + "\t是合法的手機(jī)號。"; 275 } else { 276 return str + "\t是非法的手機(jī)號!"; 277 } 278 } 279 // 例五:驗證ip地址的合法性 280 public static String checkIPAdress(String str) 281 { 282 // String ipRegex="\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";//驗證0~999之間的數(shù)字 283 String ip = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\." 284 +"(00?\\d|1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." 285 +"(00?\\d|1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." 286 +"(00?\\d|1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"; //驗證0~255之間的數(shù)字 287 if (str.matches(ip)) { 288 return str + "\t 是合法的ip地址。"; 289 } else { 290 return str + "\t 是非法的ip地址!"; 291 } 292 293 } 294 295 public static String encryption(String value,char secret){ 296 byte[] bt=value.getBytes(); 297 for(int x=0;x<bt.length;x++){ 298 bt[x]=(byte)(bt[x]^(int)secret); 299 300 } 301 return new String(bt,0,bt.length); 302 } 303 304 305 306 307 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/sunshine-habit/p/5581648.html

總結(jié)

以上是生活随笔為你收集整理的No1_6.字符串的基本操作2_Java学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。