是否有一种方便的方法来从Java String中去除任何前导或尾随空格?
就像是:
String myString = " keep this ";
String stripppedString = myString.strip();
System.out.println("no spaces:" + strippedString);
Run Code Online (Sandbox Code Playgroud)
结果:
no spaces:keep this
Run Code Online (Sandbox Code Playgroud)
myString.replace(" ","") 将取代keep和this之间的空间.
谢谢
我正在为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) 我遇到了一个有趣的场景.由于某种原因strip(),空格字符串(仅包含空格)明显快trim()于Java 11.
基准
public class Test {
public static final String TEST_STRING = " "; // 3 whitespaces
@Benchmark
@Warmup(iterations = 10, time = 200, timeUnit = MILLISECONDS)
@Measurement(iterations = 20, time = 500, timeUnit = MILLISECONDS)
@BenchmarkMode(Mode.Throughput)
public void testTrim() {
TEST_STRING.trim();
}
@Benchmark
@Warmup(iterations = 10, time = 200, timeUnit = MILLISECONDS)
@Measurement(iterations = 20, time = 500, timeUnit = MILLISECONDS)
@BenchmarkMode(Mode.Throughput)
public void testStrip() {
TEST_STRING.strip();
}
public static void main(String[] args) throws …Run Code Online (Sandbox Code Playgroud) 我正在尝试将String变量转换为整数,只有String看起来像这样(例如):
String string = " 12";
Run Code Online (Sandbox Code Playgroud)
因此String在它前面有一个空格.现在正在从.txt文件中读取String变量,这就是为什么我遇到了在它前面有空间的问题.我需要将变量转换为int,但是当我尝试时:
int integer = Integer.parseInt(string);
Run Code Online (Sandbox Code Playgroud)
要将String传递给一个整数,它会编译,但是在尝试运行程序时会出错,因为作为String的一部分有空格.
有没有办法将带有前面空格的数字串传递给int?.trim会工作吗?如果是这样,我将如何使用它?(我对.trim不是很熟悉,我还在学习!!)我很感激你的帮助!^ _ ^
这样的问题该讨论限制在使用的逻辑String::trim方法.一些像Guava这样的图书馆提供了替代品.
我隐约记得最新版本的Java(8,9,10)附带了一种替代的,更现代的Unicode -savvy方法来定义和删除文本中的空白字符.
现在是否有与Java捆绑的设施?
Java 11isBlank()为java.lang.String类添加了一个新的实例方法 .
现有方法isEmpty和新增isBlank()方法之间的基本区别是什么?