상세 컨텐츠

본문 제목

[Java/Spring] [xxx]=xxx 된 패턴을 찾아 Map으로 변경해주기

Development/Spring

by J-Developer 2020. 9. 21. 14:01

본문

반응형

리스트에서 상세페이지로 진입 시 이전 페이지의 리스트 조건들을 가지고 있으려고 [xxx]=xxx 이러한 패턴의 형식으로 리스트의 Parameter를 보냈었다.

 

예 ) objName=pageObj&params[searchType]=&params[title]=테스트2&params[contents]=테스트2&startIndex=1

 

그리고 다시 리스트로 돌아올 시 Parameter 문자열 중 [xxx]=xxx 이러한 패턴을 찾아 뽑아내어 다시 리스트의 조건에 맞춰 보여주려고 한다.

그래서 해당 패턴을 찾기위해서는 정규식을 사용하였다.

 

	/**
	 * 문자열중에 [xxx]=xxx 된 패턴을 찾아 Map으로 변경하여 줍니다.
	 * @param rtnParam
	 * @return
	 */
	public static Map<String, Object> getRtnParamMap( String rtnParam ) {
		
		Pattern p = Pattern.compile("\\[.*?\\]=.*?&");
		Matcher m = p.matcher(rtnParam);
		
		List<String> paramStrList = new ArrayList<String>();
		while (m.find()) {
		    String val = m.group();
		    paramStrList.add(val);
		}
		
		if( CollectionUtils.isEmpty(paramStrList) ) {
			return null;
		}
		
		Map<String, Object> rtnParamMap = new HashMap<String, Object>();
		for( String paramStr : paramStrList ) {
			
			String key = paramStr.substring(paramStr.indexOf("[") + 1, paramStr.indexOf("]"));
			String value = paramStr.substring(paramStr.indexOf("=") + 1, paramStr.indexOf("&"));
			
			rtnParamMap.put( key, value );
			
		}
		
		return rtnParamMap;
		
	}

 

정규식을 아직 많이 몰라 저 정규식을 만들려고 정규식 테스트 사이트에서 테스트하여 적용을 하였다.

 

 

정규식 테스트 사이트 : https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

반응형

관련글 더보기

댓글 영역