반응형

요청사항

string list = "aaa, bbb, ccc";
string list = "aaa, bbb, ccc,  ";
string list = "aaa, bbb,";
string list = "aaa, bbb";

이런식으로 쉼표가 제일 뒤에 찍힐 수도 아닐 수도 있는데,

쉼표 없는 제대로된 나열만 나오게 알고리즘을 만들자.

 

접근법은 일단 세개가 떠오른다.

하나는 split으로 쪼개고 배열의 가장 마지막칸( arr[arr.length - 1] 로 표현할 수 있다)이

trim() 후 공백이면 subString 하는 방법

 

두번째는 subString(list.lastIndexOf(",")) 

설명하자면 가장 마지막 쉼표 다음이 공백이면 그 앞까지만 subString 하는 방법

 

세번째는 split으로 배열로 쪼갠 뒤 배열의 마지막 index의 값이 trim() 후에도 빈칸값이 아니면 "," + arr[index] 를 더하는 방법이다.

 

가장 좋은 방법이라고 할 수는 없겠지만 계속 말로만 적는 것 같아서 세번쨰는 코드로 적어본다.

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		String list = "aaa,";
		String result = "";
		
		if (list.indexOf(",") > 0){
			String[] arr = list.split(",");
		    	result = arr[0];
		    
		    for (int i = 1 ; i < arr.length ; i++){
		        if(!"".equals(arr[i].trim())){
		            result += "," + arr[i];
		        }
		    }
		    
		} else {			// list = "a"; ( 쉼표가 없는 경우)
			result = list;
		}
		System.out.println(result);
	}
}

여러 경우의 수로 다 해보진 않았지만... aaa, 에서 ,가 떨어져 나간 aaa가 출력된다!

 

list 가 "aaa,bbb,   " 인경우에도 정상적으로 출력됨을 확인 했다.

사실 방법은 이외에도 많을 것이다. 창의적으로 고민해보면 도움이 되지 않을까!

반응형

+ Recent posts