다음과 같은 문자열이 있습니다.
mysz = "name=john age=13 year=2001";
문자열에서 공백을 제거하고 싶습니다. 나는 시도 trim()
했지만 이것은 전체 문자열 전후에 공백 만 제거합니다. 나는 또한 시도 replaceAll("\\W", "")
했지만 그 =
또한 제거된다.
어떻게 문자열을 얻을 수 있습니까?
mysz2 = "name=johnage=13year=2001"
다음과 같은 문자열이 있습니다.
mysz = "name=john age=13 year=2001";
문자열에서 공백을 제거하고 싶습니다. 나는 시도 trim()
했지만 이것은 전체 문자열 전후에 공백 만 제거합니다. 나는 또한 시도 replaceAll("\\W", "")
했지만 그 =
또한 제거된다.
어떻게 문자열을 얻을 수 있습니까?
mysz2 = "name=johnage=13year=2001"
답변:
st.replaceAll("\\s+","")
공백과 보이지 않는 문자를 모두 제거합니다 (예 : 탭, \n
).
st.replaceAll("\\s+","")
과 st.replaceAll("\\s","")
동일한 결과를 생성한다.
두 번째 정규 표현식은 첫 번째 정규 표현식보다 20 % 빠르지 만 연속되는 공백 수가 증가하면 첫 번째 정규 표현식이 두 번째 정규 표현식보다 성능이 좋습니다.
직접 사용하지 않는 경우 값을 변수에 지정하십시오.
st = st.replaceAll("\\s+","")
질문에 대한 가장 정답은 다음과 같습니다.
String mysz2 = mysz.replaceAll("\\s","");
방금 다른 답변 에서이 코드를 수정했습니다. 나는 질문이 정확히 요청한 것 외에도 그것을 게시하기 때문에 게시하고 있습니다. 결과가 새로운 문자열로 반환되고 원본 문자열이 일부 답변이 암시하는 것처럼 수정되지 않았 음을 하고 있습니다 .
(경험이 풍부한 Java 개발자는 "물론 실제로 문자열을 수정할 수는 없습니다"라고 말할 수 있지만이 질문의 대상 독자는이를 잘 모를 수 있습니다.)
S
있지만 하지 않는 그 문자열을 덮어 S
점을.
깨지지 않는 공백도 제거해야하는 경우 다음과 같이 코드를 업그레이드 할 수 있습니다.
st.replaceAll("[\\s|\\u00A0]+", "");
" ab c "
유틸리티 클래스를 정규식보다 선호하는 경우 Spring Framework의 StringUtils에 trimAllWhitespace (String) 메소드가 있습니다.
당신은 이미 거셀 코카 (Gursel Koca)로부터 정답을 얻었지만 이것이 실제로 당신이하고 싶은 것이 아닐 가능성이 있다고 생각합니다. 대신 키-값을 파싱하는 것은 어떻습니까?
import java.util.Enumeration;
import java.util.Hashtable;
class SplitIt {
public static void main(String args[]) {
String person = "name=john age=13 year=2001";
for (String p : person.split("\\s")) {
String[] keyValue = p.split("=");
System.out.println(keyValue[0] + " = " + keyValue[1]);
}
}
}
출력 :
이름 = 존
나이 = 13
년 = 2001
사용해야합니다
s.replaceAll("\\s+", "");
대신에:
s.replaceAll("\\s", "");
이런 식으로 각 문자열 사이에 공백이 두 개 이상있을 수 있습니다. 위 정규식에서 + 기호는 "하나 이상의 \ s"를 의미합니다.
replaceAll
는 패턴이 문자열의 어떤 부분과도 일치하지 않을 때까지 반복 될 가능성이 높습니다 .
+
연속적인 공백이 작동을 대체 하나에서 처리되기 때문에, 그것은 변두리에 더 많은 CPU 친화적 할 수도 있지만,이 경우 유일한 차이점입니다. 실제로 문자열의 비 연속 공백을 대체 All
하는 +
것이 아니라 입니다.
가장 쉬운 방법 은 " " 와 같은 라이브러리 org.apache.commons.lang3.StringUtils
클래스를 사용하는 것 입니다.commons-lang3
commons-lang3-3.1.jar
StringUtils.deleteWhitespace(String str)
입력 문자열에 정적 메소드 " "를 사용하면 공백을 모두 제거한 후 문자열이 반환됩니다. 예제 문자열 " name=john age=13 year=2001
"을 (를) 시도 했으며 원하는 문자열 ( " ")을 정확하게 반환했습니다 name=johnage=13year=2001
. 도움이 되었기를 바랍니다.
자바에서는 다음과 같은 작업을 수행 할 수 있습니다.
String pattern="[\\s]";
String replace="";
part="name=john age=13 year=2001";
Pattern p=Pattern.compile(pattern);
Matcher m=p.matcher(part);
part=m.replaceAll(replace);
System.out.println(part);
이를 위해 다음 패키지를 프로그램으로 가져와야합니다.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
도움이 되길 바랍니다.
패턴 및 매처를 사용하면 더 동적입니다.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RemovingSpace {
/**
* @param args
* Removing Space Using Matcher
*/
public static void main(String[] args) {
String str= "jld fdkjg jfdg ";
String pattern="[\\s]";
String replace="";
Pattern p= Pattern.compile(pattern);
Matcher m=p.matcher(str);
str=m.replaceAll(replace);
System.out.println(str);
}
}
아파치 문자열 유틸리티 클래스를 사용하는 것이 NullPointerException을 피하는 것이 좋습니다.
org.apache.commons.lang3.StringUtils.replace("abc def ", " ", "")
산출
abcdef
사용하는 경우 st.replaceAll("\\s+","")
에 코 틀린 , 당신은 포장 확인 "\\s+"
과 정규식 :
"myString".replace(Regex("\\s+"), "")
mysz = mysz.replace(" ","");
먼저 공백이 있고 둘째는 공백이 없습니다.
그런 다음 완료됩니다.
[ \t\n\x0B\f\r]
합니다. 당신은 정상적인 [ ]
공간 만을하고 있습니다.
이 문제를 해결하는 방법에는 여러 가지가 있습니다. 분할 기능을 사용하거나 문자열의 기능을 바꿀 수 있습니다.
자세한 내용은 smilliar 문제를 참조하십시오 http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
예제에서 공백을 제거하려면 다른 방법입니다.
String mysz = "name=john age=13 year=2001";
String[] test = mysz.split(" ");
mysz = String.join("", mysz);
이 작업은 공백을 구분 기호로 사용하여 배열로 변환 한 다음 공백없이 배열의 항목을 결합합니다.
꽤 잘 작동하고 이해하기 쉽습니다.
문자열에 공백 문자도 있습니다. 따라서 공백 문자를 문자열에서 바꿔야 할 수도 있습니다.
예 : 휴식 공간 없음, EM 당 3 개 공간, 문장 부호 공간
다음은 공백 문자 목록입니다. http://jkorpela.fi/chars/spaces.html
따라서 수정해야합니다
\ EM3 공간 당 3 개
s.replaceAll ( "[\ u0020 \ u2004]", "")
공백은 문자 클래스에서 isWhitespace 함수를 사용하여 제거 할 수 있습니다.
public static void main(String[] args) {
String withSpace = "Remove white space from line";
StringBuilder removeSpace = new StringBuilder();
for (int i = 0; i<withSpace.length();i++){
if(!Character.isWhitespace(withSpace.charAt(i))){
removeSpace=removeSpace.append(withSpace.charAt(i));
}
}
System.out.println(removeSpace);
}
각 텍스트 그룹을 자체 하위 문자열로 분리 한 다음 해당 하위 문자열을 연결하십시오.
public Address(String street, String city, String state, String zip ) {
this.street = street;
this.city = city;
// Now checking to make sure that state has no spaces...
int position = state.indexOf(" ");
if(position >=0) {
//now putting state back together if it has spaces...
state = state.substring(0, position) + state.substring(position + 1);
}
}
public static String removeWhiteSpaces(String str){
String s = "";
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
if(temp != 32 && temp != 9) { // 32 ASCII for space and 9 is for Tab
s += arr[i];
}
}
return s;
}
도움이 될 수 있습니다.
아래 Java 코드를 살펴볼 수도 있습니다. 다음 코드는 "내장"방법을 사용하지 않습니다.
/**
* Remove all characters from an alphanumeric string.
*/
public class RemoveCharFromAlphanumerics {
public static void main(String[] args) {
String inp = "01239Debashish123Pattn456aik";
char[] out = inp.toCharArray();
int totint=0;
for (int i = 0; i < out.length; i++) {
System.out.println(out[i] + " : " + (int) out[i]);
if ((int) out[i] >= 65 && (int) out[i] <= 122) {
out[i] = ' ';
}
else {
totint+=1;
}
}
System.out.println(String.valueOf(out));
System.out.println(String.valueOf("Length: "+ out.length));
for (int c=0; c<out.length; c++){
System.out.println(out[c] + " : " + (int) out[c]);
if ( (int) out[c] == 32) {
System.out.println("Its Blank");
out[c] = '\'';
}
}
System.out.println(String.valueOf(out));
System.out.println("**********");
System.out.println("**********");
char[] whitespace = new char[totint];
int t=0;
for (int d=0; d< out.length; d++) {
int fst =32;
if ((int) out[d] >= 48 && (int) out[d] <=57 ) {
System.out.println(out[d]);
whitespace[t]= out[d];
t+=1;
}
}
System.out.println("**********");
System.out.println("**********");
System.out.println("The String is: " + String.valueOf(whitespace));
}
}
입력:
String inp = "01239Debashish123Pattn456aik";
산출:
The String is: 01239123456
private String generateAttachName(String fileName, String searchOn, String char1) {
return fileName.replaceAll(searchOn, char1);
}
String fileName= generateAttachName("Hello My Mom","\\s","");
많은 답변이 제공됩니다. 정규식보다 읽기 쉽고 더 나은 솔루션을 제공하고 싶습니다.
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
public class RemoveAllWhitespaceTest {
public static void main(String[] args) throws IOException {
String str1 = "\n\tThis is my string \n \r\n !";
System.out.println("[" + str1 + "]");
System.out.println("Whitespace Removed:");
System.out.println("[" + StringUtils.deleteWhitespace(str1) + "]");
System.out.println();
}
}
\\W
모든 비 단어 는 download.oracle.com/javase/6/docs/api/java/util/regex/…를