Java中把一個字符串中大寫字母轉換為小寫,小寫字母轉換為大寫
觀看提示:
這里提供2中思維,但是第一種是正確的,第二種是錯誤的;第二種的思維可以了解了解,但是需要注意的是如果某個字符串定義為String類型,那么這個串就不能改變了;如果需要改變,那么應該使用StringBuffer,這個例子也能夠很好的說明StringBuffer和String之間的區別!
下面的代碼中exChange()能夠得到正確的結論,exChange2()不能得到正確的結論,原因就是上面說的:如果某個字符串定義為String類型,那么這個串就不能改變了
- //把一個字符串中的大寫轉為小寫,小寫轉換為大寫:思路1
- public static String exChange(String str){
- StringBuffer sb = new StringBuffer();
- if(str!=null){
- for(int i=0;i<str.length();i++){
- char c = str.charAt(i);
- if(Character.isUpperCase(c)){
- sb.append(Character.toLowerCase(c));
- }else if(Character.isLowerCase(c)){
- sb.append(Character.toUpperCase(c)); //有一次面試問append()是哪個類里面的
- }
- }
- }
- return sb.toString();
- }
- //把一個字符串中的大寫轉為小寫,小寫轉換為大寫:思路2
- public static String exChange2(String str){
- for(int i=0;i<str.length();i++){
- //如果是小寫
- if(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase())){
- str.substring(i, i+1).toUpperCase();
- }else{
- str.substring(i, i+1).toLowerCase();
- }
- }
- return str;
- }
【溫馨提示】.
Apache的commons-lang包中有很多我們常用的方法.比如IO操作的中的拷貝整個目錄,判斷一個字符是不是符合Email的格式,判斷一個字符是不是數字型.....
所以千萬別什么都自己寫.盡量看看在其中是不是已經有現成的方法了.
比如上面這個問題,.就可以這么寫【項目中需要有commons-lang這個包,可以去http://commons.apache.org/proper/commons-lang/download_lang.cgi下載】
String str = "aBcD";
System.out.println(StringUtils.swapCase(str));
我看了源碼:StringUtils.swapCase(str)這個方法的實現其實跟第一種差不多!下面是apache官方的swapCase這個方法
- /**
- * <p>Swaps the case of a String changing upper and title case to
- * lower case, and lower case to upper case.</p>
- *
- * <ul>
- * <li>Upper case character converts to Lower case</li>
- * <li>Title case character converts to Lower case</li>
- * <li>Lower case character converts to Upper case</li>
- * </ul>
- *
- * <p>For a word based algorithm, see {@link org.apache.commons.lang3.text.WordUtils#swapCase(String)}.
- * A {@code null} input String returns {@code null}.</p>
- *
- * <pre>
- * StringUtils.swapCase(null) = null
- * StringUtils.swapCase("") = ""
- * StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
- * </pre>
- *
- * <p>NOTE: This method changed in Lang version 2.0.
- * It no longer performs a word based algorithm.
- * If you only use ASCII, you will notice no change.
- * That functionality is available in org.apache.commons.lang3.text.WordUtils.</p>
- *
- * @param str the String to swap case, may be null
- * @return the changed String, {@code null} if null String input
- */
- public static String swapCase(String str) {
- if (StringUtils.isEmpty(str)) {
- return str;
- }
- char[] buffer = str.toCharArray();
- for (int i = 0; i < buffer.length; i++) {
- char ch = buffer[i];
- if (Character.isUpperCase(ch)) {
- buffer[i] = Character.toLowerCase(ch);
- } else if (Character.isTitleCase(ch)) {
- buffer[i] = Character.toLowerCase(ch);
- } else if (Character.isLowerCase(ch)) {
- buffer[i] = Character.toUpperCase(ch);
- }
- }
- return new String(buffer);
- }
- //第三種思路:利用Character包裝類的isLowerCase()和isUpperCase()方法:
-
總結:
1.Java很強大,包裝了一些常用的方法,在了解的基礎上,現成的當然省力。
2.經常查java的Api文檔很重要,java的巨人。
3.前兩種思路包含了很巧妙地思想,擴展思維有很大幫助。在不了解java的情況下,完全可以靠學過的知識解決。
經常犯的錯誤
1.注意:如果將 a[i]<='Z'寫成了a[i]<="Z",就會報錯:運算符<=不能應用於char,java.lang.String
因為雙引號表示字符串(String類型),單引號表示字符(Char類型)。
2.length()方法 i<j.length() 寫成i<jlength,就會報錯.
java中判斷字符串是否為純數字
方法一:利用正則表達式
public class Testone {
public static void main(String[] args){
String str="123456";
boolean result=str.matches("[0-9]+");
if (result == true) {
System.out.println("該字符串是純數字");
}else{
System.out.println("該字符串不是純數字");
}
}
}方法二:利用Pattern.
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Testone {
public static void main(String[] args){
String str="123456";
Pattern pattern = Pattern.compile("[0-9]{1,}");
Matcher matcher = pattern.matcher((CharSequence)str);
boolean result=matcher.matches();
if (result == true) {
System.out.println("該字符串是純數字");
}else{
System.out.println("該字符串不是純數字");
}
}
}//原來以為正則表達式是js里面的,Java中也有呀!