在所有其他相关帖子中,人们询问有关删除String java中的前导或/和尾随空格的问题。现在,我的问题是如何获得前导或尾随空格?我能想到的是例如使用这样的函数来获取尾随空格:
private String getTrailingSpaces(String str) {
return str.replace(str.replaceFirst("\\s+$", ""), "");
}
但是我不确定这是否正确,即使是这样,有没有更好的方法呢?
答案 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
}
}