如何在String java中获取前导和尾随空格

时间:2014-02-28 16:54:59

标签: java string

在所有其他相关帖子中,人们询问有关删除String java中的前导或/和尾随空格的问题。现在,我的问题是如何获得前导或尾随空格?我能想到的是例如使用这样的函数来获取尾随空格:

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

但是我不确定这是否正确,即使是这样,有没有更好的方法呢?

4 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分: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 "";  
}

答案 2 :(得分: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;
}

答案 3 :(得分: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
  }
}