2014-02-28 3 views
1

다른 모든 관련 게시물에서 사람들이 String java에서 선행 공백 및/또는 후미 공백을 제거하는 것에 대해 질문했습니다. 자, 내 질문은 어떻게 앞이나 뒤에 공백을 얻을 수 있습니까? 내가 생각할 수있는 것은 이러한 기능을 사용하여 후행 공백을 얻기 위해, 예를 들면 :String에서 선행 및 후행 공백을 얻는 방법 java

private String getTrailingSpaces(String str) { 
    return str.replace(str.replaceFirst("\\s+$", ""), ""); 
} 

을하지만이 맞는지 확실하지 않습니다 또는이 경우,이 작업을 수행하는 더 나은 방법이?

답변

1

는이

String leading = str.replaceAll("^(\\s+).+", "$1"); 
    String tailing = str.replaceAll(".+?(\\s+)$", "$1"); 
+0

두 번째 인수가 무슨 뜻인지 이해할 수 없습니다. – user3150474

+0

두 번째 인수는 그룹 # 1의 내용을 의미합니다. 그룹 번호 1은 (\\ s ++)입니다. 모든 것은 모든 입력을 그룹 1의 내용으로 바꾸는 것을 의미합니다. –

+0

문자열에 공백 만 있으면 어떻게 될까요? – kdgregory

0

같은 것을 시도하려고 :

private String getTrailingSpaces(String str) { 
    Pattern p = Pattern.compile(".*(\\s+)$"); 
    Matcher m = p.matcher(str); 
    String trailing = ""; 
    if (m.matches) { 
    trailing = m.group(1); 
    } 
    return trailing; 
} 
1

나는 전문가가 아니에요을하지만 난 당신이 별개의 정규 표현식, 후행 공백을위한 최고의 공간에 대한 하나 하나를 수행해야한다고 생각 .

private static final Pattern LEADING = Pattern.compile("^\\s+"); 
private static final Pattern TRAILING = Pattern.compile("\\s+$"); 

public String getLeadingSpaces(String str) { 
    Matcher m = LEADING.matcher(str); 
    if(m.find()){ 
     return m.group(0); 
    } 
    return ""; 
} 

public String getTrailingSpaces(String str) { 
    Matcher m = TRAILING.matcher(str); 
    if(m.find()){ 
     return m.group(0); 
    } 
    return ""; 
} 
+0

이러한 패턴을 단일 패턴으로 결합하여 정규 표현식에서 개별 그룹을 가져올 수 있습니다. – kdgregory

+0

시도했지만 올바른 "합류"정규식을 찾을 수 없었습니다. –

0

시도해보십시오. ArrayUtils from Apache Commons이 필요합니다.

String str1 = " abc "; 
char[] cs = str1.toCharArray(); 
Character[] characters = ArrayUtils.toObject(cs); 
// System.out.println(characters.length); // 6 
for (Character character : characters) { 
    if (character.isSpace(character.charValue())) { 
    // PROCESS ACCORDINGLY 
    } else { 
    // PROCESS ACCORDINGLY 
    } 
} 
관련 문제