내가 원하는 것은 단어의 첫 번째 문자와 마지막 문자를 제외한 문장을 밑줄 문자로 바꾸는 것입니다.모든 단어의 첫 번째 문자와 마지막 문자를 제외한 자바 대체 문자
예 :
I am walking
사람 :
I am w_____g
이 정규식 수 있습니까?
내가 원하는 것은 단어의 첫 번째 문자와 마지막 문자를 제외한 문장을 밑줄 문자로 바꾸는 것입니다.모든 단어의 첫 번째 문자와 마지막 문자를 제외한 자바 대체 문자
예 :
I am walking
사람 :
I am w_____g
이 정규식 수 있습니까?
좀 더 자세한 질문에서하고 당신은 사람들이 다음 도움을 더하고자하는 시도 것을 우리에게 이야기 할 미래에 작동해야이 답변)
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_____?
정규 표현식을 사용하여 일치 항목의 시작과 끝을 볼 수 있다고 생각합니다. 그러나이 경우 정규 표현식이 잔인한 것처럼 보입니다. 새로운 문자 배열을 할당하는 배열로 입력의 첫 번째와 마지막 문자를 복사하는 것이 더 간단하고, 밑줄과 중간에 채우기는 다음과 같이, 그 문자 배열에서 문자열을 할당 :
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_______________.
참고.
그리고 지금까지 시도한 것은 무엇입니까? –
"나는 걷고있다"라는 문장을 사용하고 처음과 마지막 문자를 제외한 모든 것을 밑줄로 바꾸면 나는 "나는 __________ g"을 얻는다. 좀 더 정확한 방법이 필요하고 말이되는 예를 게시해야합니다. 또한, 우리가 기꺼이 도와 주려고 시도한 것을 보여줄 필요가 있지만 코드 요청을 수행하기 위해 여기에 서 있지 않습니다. – jlordo
정규식을 사용하는 이유는 무엇입니까? –