문자열로 전달되는 문장이 있고 “and”라는 단어를 바꾸고 있는데 “”로 바꾸고 싶습니다. 그리고 “and”라는 단어를 공백으로 바꾸지 않습니다. 아래는 내 논리의 예입니다. 그리고 이것을 디버그하면 논리가 문장으로 떨어집니다.
String sentence = "Define, Measure, Analyze, Design and Verify"
if (sentence.contains("and")){
sentence.replace("and", " ");
}
내가 여기에 빠진 것이 있습니까?
답변
그리고 이것을 디버그하면 논리가 문장으로 떨어집니다.
예, 그런 다음 반환 값을 버립니다.
Java의 문자열은 변경할 수 없습니다.를 호출 replace
하면 기존 문자열 의 내용이 변경되지 않고 수정 된 새 문자열이 반환 됩니다. 따라서 원하는 :
sentence = sentence.replace("and", " ");
이 적용 모든 문자열 (의 방법 substring
, toLowerCase
등). 그들 중 어느 것도 문자열의 내용을 변경 하지 않습니다 .
조건에서 실제로이 작업을 수행 할 필요 는 없습니다. 결국 문장에를 포함 하지 않는"and"
경우 대체를 수행해도 해가되지 않습니다.
String sentence = "Define, Measure, Analyze, Design and Verify";
sentence = sentence.replace("and", " ");
답변
문자열은 변경 불가능 하므로 내용을 변경할 수 없습니다. 전화 replace(this,that)
하면 완전히 새로운 문자열로 끝납니다. 이 새 복사본을 유지하려면 변수에 할당해야합니다. 이전 참조 ( sentence = sentence.replace(this,that)
아래에 표시된대로 la 또는 새 참조)를 덮어 쓸 수 있습니다 .
public class Test{
public static void main(String[] args) {
String sentence = "Define, Measure, Analyze, Design and Verify";
String replaced = sentence.replace("and", "");
System.out.println(replaced);
}
}
제쳐두고, contains()
여기서는 불필요한 호출이므로 수표를 제거했습니다 . 포함되지 않은 경우 교체는 교체에 실패합니다. 교체하는 것이 확인하는 실제 조건과 다른 경우에만 포함 메서드를 원할 것입니다.
답변
반환 값으로 아무것도하지 않습니다 replace
. 새로운 메서드 인 결과를 할당해야합니다 String
.
sentence = sentence.replace("and", " ");
A String
는 Java에서 변경할 수 없습니다. 방법 좋아하는 replace
새를 반환 String
.
귀하의 contains
시험은 불필요 : replace
이 경우 단지 무 조작 할 수없는 텍스트의 인스턴스가 대체 없습니다.
답변
다음과 같이 교체 결과를 다시 할당해야합니다.
sentence = sentence.replace("and", " ");
주의하십시오 String
클래스는 불변의 의미, 모든 메서드의 새로운 문자열을 반환 결코 현재 위치에서 원래 문자열을 수정하지의 인스턴스의 메서드를 호출 한 결과, 그래서 String
변수에 할당해야하거나 즉시 사용 변경 사항이 적용됩니다.
답변
package com.tulu.ds;
public class EmailSecurity {
public static void main(String[] args) {
System.out.println(returnSecuredEmailID("sample717@gmail.com"));
}
private static String returnSecuredEmailID(String email){
String str=email.substring(1, email.lastIndexOf("@")-1);
return email.replaceAll(email.substring(1, email.lastIndexOf("@")-1),replacewith(str.length(),"*"));
}
private static String replacewith(int length,String replace) {
String finalStr="";
for(int i=0;i<length;i++){
finalStr+=replace;
}
return finalStr;
}
}