자바 해석 문자열

1684 단어 자바
변 통 된 디지털 문자열, 소수점 형식 과 E 형식의 문자열 을 긴 성형 으로 바 꾸 고 전면적 이지 못 할 수도 있 으 니 지적 해 주 십시오.
/**
	 *       long,                 
	 * @param str       :"123"\"23.23"\".12"\"23."\"23.3E3"\".2E3"\
	 * @return
	 */
	public long string2Long(String str){
		long result = 0;
		
		String regex1 = "\\d+";
		String regex2 = "\\d*\\.\\d*";
		String regex3 = "\\d*[.]?\\d+[eE]\\d*";
		
		if(Pattern.matches(regex1, str)){
			result = Long.parseLong(str);
		}else if(Pattern.matches(regex2, str)){
			int index = str.indexOf(".");
			if(index == 0){
				result = 0;
			}else{
				str = str.substring(0, index);
				result = Long.parseLong(str);
			}
		}else if(Pattern.matches(regex3, str)){
			int index = 0;
			String exp = "0";
			if(str.contains("e")){
				index = str.indexOf("e");
				str = str.substring(0, index);
				exp = str.substring(index + 1);
			}else if(str.contains("E")){
				index = str.indexOf("E");
				if(index < str.length()){
					exp = str.substring(index + 1);
				}
				str = str.substring(0, index);
			}
			if(str == null){
				result = 0;
			}else{
				double pre = Double.parseDouble(str);
				long lexp = Long.parseLong(exp);
				result = new Double(pre * Math.pow(10, lexp)).longValue();
			}
		}else{
			throw new RuntimeException("    ");
		}
		
		return result;
	}

좋은 웹페이지 즐겨찾기