在其他更改中,JDK 11为java.lang.String类引入了6种新方法:
repeat(int)- 重复String的次数与int参数提供的次数相同lines() - 使用Spliterator延迟提供源字符串中的行isBlank() - 指示String是否为空或仅包含空格字符stripLeading() - 从头开始删除空白区域stripTrailing() - 从末端移除空白区域strip() - 从字符串的开头和结尾删除空白区域 特别是,strip()看起来非常相似trim().根据这篇文章, strip*()方法旨在:
String.strip(),String.stripLeading()和String.stripTrailing()方法修剪目标字符串的正面,背面或正面和背面的空白[由Character.isWhiteSpace()确定].
String.trim() JavaDoc声明:
/**
* Returns a string whose value is this string, with any leading and trailing
* whitespace removed.
* ...
*/
Run Code Online (Sandbox Code Playgroud)
这几乎与上面的引用相同.
究竟之间的差别String.trim(),并String.strip()因为Java的11?
我正在为J2ME应用程序编写这个函数,所以我没有一些更高级/现代的Java类可供我使用.我正在接受java.lang.ArrayIndexOutOfBoundsException这个.所以,显然要么它不喜欢我初始化newChars数组的方式,要么我在调用时没有正确地做某事System.arraycopy.
/*
* remove any leading and trailing spaces
*/
public static String trim(String str) {
char[] chars = str.toCharArray();
int len = chars.length;
// leading
while ( (len > 0 ) && ( chars[0] == ' ' ) ) {
char[] newChars = new char[] {}; // initialize empty array
System.arraycopy(chars, 1, newChars, 0, len - 1);
chars = newChars;
len = chars.length;
}
// TODO: trailing
return chars.toString();
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
从Java字符串中删除前导和尾随空格
当我将数据导入应用程序时,我需要摆脱某些字符串末尾的空格而不是开头的空格,所以我不能使用trim()...我已经设置了一个方法:
public static String quitarEspaciosFinal(String cadena) {
String[] trozos = cadena.split(" ");
String ultimoTrozo = trozos[trozos.length-1];
return cadena.substring(0,cadena.lastIndexOf(ultimoTrozo.charAt(ultimoTrozo.length()-1))+1);
}
Run Code Online (Sandbox Code Playgroud)
其中cadena是我必须改变的字符串......
所以,如果cadena ="1234",这种方法会返回"1234"......
我想知道是否有更有效的方法来做到这一点......
我想从字符串中删除前导和尾随空格:
String s = " Hello World ";
Run Code Online (Sandbox Code Playgroud)
我希望结果如下:
s == "Hello world";
Run Code Online (Sandbox Code Playgroud) 我有一个这样的字符串:
Mr Moh Jo\n
Address\n
33333 City\n\n
Aland Islands
Run Code Online (Sandbox Code Playgroud)
我想删除每行开头的空格并使用以下代码结束每行的结尾,但它不起作用
public static String trimWhiteSpaceFromTheBeginingAndEndOFTheLine(
String string) {
Pattern trimmer = Pattern.compile("^\\s+|\\s+$");
Matcher m = trimmer.matcher(string);
StringBuffer out = new StringBuffer();
while (m.find())
m.appendReplacement(out, "");
m.appendTail(out);
return out.toString();
}
Run Code Online (Sandbox Code Playgroud)
预期结果:
Mr Moh Jo\n
Address\n
33333 City\n\n
Aland Islands
Run Code Online (Sandbox Code Playgroud) 这是我的代码
boolean isWithinRange(String d)
{
boolean withinDate = false;
try
{
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(d);
withinDate = !(date.before(startDate) || date.after(endDate));
}
catch (ParseException parseException)
{
}
return withinDate;
}
Run Code Online (Sandbox Code Playgroud)
输入
2015-11-26
2015-11-26 - 复制
两者都返回 true,但我需要的是“2015-11-26”应该为 true,“2015-11-26 - Copy”应该为 false。
你如何使用string.trim()方法只在最后修剪白色空格?
我的意思是不影响正面的空间
ex:输入:"这是linkedin"o/p:"这是linkedin"