문자열 바꾸기 방법이 문자를 바꾸지 않습니다.
문자열로 전달되는 문장이 있고 "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;
}
}
참고 URL : https://stackoverflow.com/questions/12734721/string-replace-method-is-not-replacing-characters
'programing' 카테고리의 다른 글
SQL 쿼리 : 테이블에서 최신 N을 제외한 모든 레코드를 삭제 하시겠습니까? (0) | 2020.10.13 |
---|---|
기기에 카메라가 있는지 확인 하시겠습니까? (0) | 2020.10.13 |
Notepad ++ 충돌시 코드 줄 손실 (0) | 2020.10.13 |
따옴표와 큰 따옴표 이스케이프 (0) | 2020.10.12 |
현재 작업 디렉토리 대신 파일 위치를 기반으로하는 상대 경로 (0) | 2020.10.12 |