2014-02-28 129 views
1

在所有其他相關文章中,人們詢問了如何刪除String java中的前導空格或尾隨空格。現在,我的問題是如何獲得前導或尾隨空格?我能想到的是例如使用這樣的功能,以獲得尾隨空格:如何獲取字符串中的前導空格和尾隨空格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的內容。第一組是(\\ 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

我不是專家,但我認爲你應該執行2個不同的正則表達式,一個領先的空間,一個用於尾隨空格。

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 
    } 
} 
相關問題