Java 带空白的分裂函数问题
我想用特殊字符分隔字符串,例如:Java 带空白的分裂函数问题,java,split,Java,Split,我想用特殊字符分隔字符串,例如: String s = ",?hello=glu()Stop/<><$#!gluglufazoperu"; 我有一个问题,当我使用split时,它会在字符串数组的开头添加空格,有人知道如何删除它吗 下面是我的代码示例: public class Main { public static void main(String[] args) { String s = ",?hello=glu()Stop/<><
String s = ",?hello=glu()Stop/<><$#!gluglufazoperu";
我有一个问题,当我使用split时,它会在字符串数组的开头添加空格,有人知道如何删除它吗
下面是我的代码示例:
public class Main {
public static void main(String[] args) {
String s = ",?hello=glu()Stop/<><$#!gluglufazoperu";
String f[] = s.split("[^\\w \\s]+");
int i= 0;
while(i < f.length){
System.out.println(f[i]);
i++;
}
}
}
公共类主{
公共静态void main(字符串[]args){
String s=“,?hello=glu()Stop/有一个空格,因为在“,”和“?”之间的第一次拆分返回一个空字符串“”。
使用while循环打印System.out.println(“”),这是一个空行
如果只想打印非空字符串,则应将System.out.println替换为
if(!"".equals(f[i])){
System.out.println(f[i]);
}
(除了你的问题)还有一个小提示,请看一下本教程
不是空白,而是空字符串,因为“,?”也是分隔符。这也可能发生在结尾
您可以简单地跳过一个空字符串。
您可以从阵列中删除这些内容,因为这样做会产生副本,成本很高
if (f.length > 1) {
if (f[0].isEnpty()) {
f = Arrays.copyOfRange(f, 1, f.length);
}
if (f.length > 1) {
if (f[f.length - 1].isEnpty()) {
f = Arrays.copyOfRange(f, 0, f.length - 1);
}
}
}
备注:
String[]f=…
在java中更为传统
\\s
已捕获空间,是否确实要保留空间
在拆分之前,只需将与正则表达式匹配的字符串的最长前缀替换为空字符串即可:
final String regex = "[^\\w \\s]+";
String f[] = s.replaceAll("^"+regex, "")
.split(regex);
您可以先用一个空格替换特殊字符,修剪结果,然后拆分。但是您仍然需要处理空字符串的角大小写。您的代码在my End上运行良好。您的代码在此处也运行良好。您可以删除返回数组的第一个和最后一个元素,或者仅使用if语句检查是否为white space然后不打印…!“”。equals(f[i])
可以替换为correct!tnx作为加法。我更喜欢“.equals”,因为那样你就不能得到空指针,但这只是一个味道问题。它可以工作,但你能告诉我”“是什么意思吗?你在比较什么?”“表示空字符串。
final String regex = "[^\\w \\s]+";
String f[] = s.replaceAll("^"+regex, "")
.split(regex);