Javaでよく使う関数まとめ


よく使うけどよく忘れる関数のメモ。
今後もどんどん増やしていきたい。

# 文字列の検証用関数
### 先頭文字が大文字かどうか

```.java
	public boolean isFirstUpperCase(String str) {
		return Character.isUpperCase(str.charAt(0));
	}
```

### 全角文字を含むかどうか

```.java
	public boolean isContainEm(String str) {
		return str.length() < str.getBytes().length;
	}
```

### 文字が数字かどうか１

```.java
	public boolean isNumber(String str) {
	    return str.matches("-?[0-9]*\\.?[0-9]+");
	}
```

### 文字が数字かどうか2

```.java
	public boolean isNumber2(String str) {
		try {
			Integer.parseInt(str);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}
```

### 文字がnullまたは空文字かどうか

```.java
	public boolean isNullString(String str) {
		return (str == null || str.length() == 0);
	}
```



### 文字列の部分一致
http://qiita.com/nbkn/items/d609c2f9f8b487d37da0

### URLが存在するか
http://qiita.com/nbkn/items/4a081f2893a4ab844340



# ファイル関係
### ファイルの存在確認・書き込み可能確認

```.java
	/**
	 * @param file：対象のファイル
	 * @return：存在して書き込み可能ならtrue
	 */
	public boolean isFile(File file) {
		return file != null && file.exists() 
				&& file.isFile() && file.canWrite();
	}
```

### ファイルの内容を文字列で取得

```.java
	/** 
	 * @param fileName ： 読み込むファイル名
	 * @return ファイルの中身。読み込めなかったらnull
	 * @throws IOException
	 */
	public String file2String(String fileName) throws IOException {
		if(isNullString(fileName)) {
			return false;
		}
		File file = new File(fileName);
		if(isFile(file)) {
			BufferedReader br = null;
			try {
				br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
				StringBuffer sb = new StringBuffer();
				int c;
				while ((c = br.read()) != -1) {
					sb.append((char) c);
				}
				return sb.toString();
			} finally {
				br.close();
			}
		}
		return null;
	}
```

### ファイルに追記or上書き

```.java
	 /**
	 * @param fileName  : 対象のファイル
	 * @param text      : 追記する内容
	 * @param isAdding  : trueなら追記，falseなら上書き
	 * @return : 成功したらtrue
	 */
	public boolean write2File(String fileName, String text, boolean isAdding) {
		if(isNullString(fileName)) {
			return false;
		}
		File file = new File(fileName);
		if(isFile(file)) {
			try {
				PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file, isAdding)));
				pw.write(text);
				pw.close();
				return true;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return false;
	}
```


### 指定した文字を含む行をファイルから削除

```.java
	/**
	 * @param fileName
	 * @param deleteLetter
	 * @throws IOException
	 */
	public void deleteLine(String fileName, String deleteLetter) throws IOException {
		if(isNullString(fileName)) {
			return false;
		}
		File file = new File(fileName);
		if(isFile(file)) {
			BufferedReader br = null;
			StringBuffer sb = null;
			try {
				br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
				sb = new StringBuffer();
				String line;
				while ((line = br.readLine()) != null) {
					if(!isMatch(line, deleteLetter)) {
						sb.append(line+"\n");
					}
				}
				write2File(fileName, sb.toString(), false);
			} finally {
				br.close();
			}
		}
	}
```


### ファイルの中身をソート

```.java
	/**
	 * @param fileName
	 */
	public void sortFileContents(String fileName) {
		String[] fileContents= null;
		try {
			fileContents  = file2String(fileName).split("\n");
			Arrays.sort(fileContents);
			String writeStr = "";
			
			for(int i=0; i<fileContents.length; i++) {
				writeStr += fileContents[i] + "\n";
			}
			write2File(fileName, writeStr, false);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
```


# 文字列変換系


### Unicode文字列に変換する

```.java
	/**
	 * @param original
	 * @return
	 */
	public String convert2Unicode(String original) {
	    StringBuilder sb = new StringBuilder();
	    for (int i = 0; i < original.length(); i++) {
	        sb.append("\\" + String.format("\\u%04X", Character.codePointAt(original, i)));
	    }
	    return sb.toString();
	}
```

###  Unicode文字列から元の文字列に変換する
```.java
	/**
	 * @param unicode
	 * @return:unicodeじゃなければそのまま返す
	 */
	public String convert2Oiginal(String unicode) {
		if(isMatch(unicode, "\\\\\\\\u")) {
			String[] codeStrs = unicode.split("\\\\\\\\u");
			int[] codePoints = new int[codeStrs.length - 1]; 
			for (int i = 0; i < codePoints.length; i++) {
				codePoints[i] = Integer.parseInt(codeStrs[i + 1], 16);
			}
			String encodedText = new String(codePoints, 0, codePoints.length);
			return encodedText;
	    }
	    return unicode;
	}
```


### リストから配列へ
```.java
	public String[] list2Array(List<String> list) {
	    return (String[])list.toArray(new String[list.size()]);
	}
```

### 配列からリストへ
```.java
	public List<String> array2List(String[] array) {
		return Arrays.asList(array);
	}
```