2017-11-23 2 views
-1

입력을 제 위치에 문자의 값을 대체 정규식 "107501AB021F" 출력 "1,075 1AB 21F"자바 각 2 문자

  1. 입력 항상 12 자리 16 진수 값이고 가정한다. 0은 최초의 위치에 발생하면 각 2 자리 문자에 대한
  2. 가,이 공간을 교체해야합니다 나는 우리가 만약 조건과 수 charAt하여이 작업을 수행 할 수 있습니다 알고 있지만,

가 할 수있는 옵션이있다 이걸 쓰지 않고?

+0

이것은 코드 작성 서비스가 아닙니다. 지금까지 무엇을 시도 했습니까? 코드 게시! 네가 그것을 도망 칠 때 무슨 일이 일어난거야? 대신에 당신은 무엇을 기대 했습니까? 특별히 문제가있는 것은 무엇입니까? https://stackoverflow.com/help/mcve – Robert

+0

[부분으로 나누어보십시오.] (https://stackoverflow.com/questions/2297347/splitting-a-string-at-every-n- th-character) 그리고 나서 [do your magic] (https://stackoverflow.com/questions/8540015/determine-if-string-starts-with-letters-a-through-i)를 입력하십시오. – ctwheels

+0

Robert, Bedla의 게시물에있는 코드를 참조하십시오. 코드가있는 방법과 정확히 일치합니다. 그러나 RegEx와 함께 if 조건문을 사용하지 않고이 작업을 수행 할 수 있는지 궁금합니다. – Kumar

답변

0

저는 가장 효율적인 솔루션은 char 배열의 모든 두 번째 문자를 반복하고 비교하는 것이라고 생각합니다.

public class ReplaceOddIndexesInString { 
    public String replace(final String hex){ 
     final char[] arr = hex.toCharArray(); 
     for (int i = 0; i<arr.length; i=i+2) { 
      if (arr[i]=='0'){ 
       arr[i]=' '; 
      } 
     } 
     return new String(arr); 
    } 

    @Test 
    public void testIt(){ 
     TestCase.assertEquals("1075 1AB 21F", replace("107501AB021F")); 
    } 
} 
+0

Bedla에게 감사합니다. 정확한 코드가 있습니다. 주어진 입력 문자열에 대해 조건부 검사 (6 번)를 사용하지 않고이를 달성 할 수있는 다른 방법이 있는지 확인하고 싶었습니다. – Kumar