我有一个类似
的字符串 String str = " hello world\n "
当我调用str.trim()时, 它返回
"hello world"
但是,我需要这样的字符串
"hello world\n"
如何仅删除字符串中的前导空格和尾随空格?
答案 0 :(得分:2)
尝试使用此功能,但将Character.isWhitespace替换为您自己的应跟踪为空白的实现
public static String trim(String s) {
return ltrim(rtrim(s));
}
public static Boolean isWhitespace(char c) {
return Character.isWhitespace(c);
}
public static String ltrim(String s) {
int i = 0;
while (i < s.length() && isWhitespace(s.charAt(i))) {
i++;
}
return s.substring(i);
}
public static String rtrim(String s) {
int i = s.length()-1;
while (i >= 0 && isWhitespace(s.charAt(i))) {
i--;
}
return s.substring(0,i+1);
}
答案 1 :(得分:0)
您可以将所有 \ n 字符替换为 \\ n。,然后对其进行修剪。修剪后,将'\\ n'替换为\ n
String str = " hello world\n ";
str=str.replace("\n", "\\n"); // replace '\n' with '\\n'
System.out.println(str);
str=str.trim(); // trim it
System.out.println(str);
str=str.replace("\\n", "\n"); // reverse it
System.out.println(str);
System.out.println("end"); // to see new line
输出:
hello world
hello world\n
hello world\n
hello world
end
答案 2 :(得分:0)
这就是我要做的。
private static Pattern pat = Pattern.compile("[\t ]*(.*?)[\t ]*", Pattern.DOTALL);
public static String stripWhiteStuff(String str) {
Matcher m = pat.matcher(str);
return m.matches()? m.group(1) : str;
}
public static void main(String... args) {
String str = " Hello\n\t ";
System.out.println(">" + stripWhiteStuff(str) + "<");
}
结果:
>Hello
<
答案 3 :(得分:0)
您可以使用带有该字符的正则表达式删除。
这是一个非常有效的代码。
String s = " Hello world\n ";
System.out.println(s);
System.out.println(s.replaceAll("(^ +)|( +$)", ""));
输出
Hello world\n
Hello world\n
答案 4 :(得分:-2)
您必须转义反斜杠,以便将其视为文字:
String str = " hello world\\n ";
System.out.println(str.trim());
输出
hello world\n