2013-05-28 7 views
-3

내가 원하는 것은 단어의 첫 번째 문자와 마지막 문자를 제외한 문장을 밑줄 문자로 바꾸는 것입니다.모든 단어의 첫 번째 문자와 마지막 문자를 제외한 자바 대체 문자

예 :

I am walking 

사람 :

I am w_____g 

이 정규식 수 있습니까?

+0

그리고 지금까지 시도한 것은 무엇입니까? –

+1

"나는 걷고있다"라는 문장을 사용하고 처음과 마지막 문자를 제외한 모든 것을 밑줄로 바꾸면 나는 "나는 __________ g"을 얻는다. 좀 더 정확한 방법이 필요하고 말이되는 예를 게시해야합니다. 또한, 우리가 기꺼이 도와 주려고 시도한 것을 보여줄 필요가 있지만 코드 요청을 수행하기 위해 여기에 서 있지 않습니다. – jlordo

+0

정규식을 사용하는 이유는 무엇입니까? –

답변

0

좀 더 자세한 질문에서하고 당신은 사람들이 다음 도움을 더하고자하는 시도 것을 우리에게 이야기 할 미래에 작동해야이 답변)

public static void main(String[] args) { 
    System.out.println(replaceAll("Hello", '_')); 

    String sentence = "Hello Mom What Is For Dinner?"; 
    StringBuilder sentenceReformed = new StringBuilder(); 

    for (String word : sentence.split(" ")) { 
     sentenceReformed.append(replaceAll(word, '_')); 
     sentenceReformed.append(" "); 
    } 

    System.out.println(sentenceReformed); 
} 

public static String replaceAll(String word, char replacer) { 
    StringBuilder ret = new StringBuilder(); 
    if (word.length()>2) { 
     ret.append(word.charAt(0)); 
     for (int i = 1; i < word.length() - 1; i++) { 
      ret.append(replacer); 
     } 
     ret.append(word.charAt(word.length() - 1)); 
     return ret.toString(); 
    } 

    return word; 
} 

아웃 :

H__o 
H___o M_m W__t Is F_r D_____? 
+0

이것은 작동하지만 공백을 포함하여 가능합니까? 같은 단어되지 않습니다 H___o M_m – Cyto

+0

, 즉 문장이, 당신은, 문장의 모든 단어에 대해 위의 코드를 사용하여 내 업데이 트를 볼 수 있습니다. – arynaq

+0

와우 들으 형제. 며칠 동안 이것을하려고했습니다. – Cyto

0

정규 표현식을 사용하여 일치 항목의 시작과 끝을 볼 수 있다고 생각합니다. 그러나이 경우 정규 표현식이 잔인한 것처럼 보입니다. 새로운 문자 배열을 할당하는 배열로 입력의 첫 번째와 마지막 문자를 복사하는 것이 더 간단하고, 밑줄과 중간에 채우기는 다음과 같이, 그 문자 배열에서 문자열을 할당 :

public class ReplaceMiddle { 

public static String replaceMiddle (String s) { 
    char[] c = new char[s.length()]; 

    c[0] = s.charAt(0); 

    for (int i = 1; i < s.length() - 1; i++) { 
    c[i] = '_'; 
    } 

    c[s.length() - 1] = s.charAt(s.length() - 1); 

    return new String(c); 

} 

public static void main(String[] argv) { 
    System.out.println(ReplaceMiddle.replaceMiddle("I want a pumpkin.")); 
} 

}

출력이 제로 길이 문자열, 또는 S가 null되는 경우를 처리하지 않습니다

I_______________. 

참고.