Java 当我对字符串使用split方法时,为什么会在字符串的数组列表中添加额外的空间
我已经附上了我的代码和代码的输出。当我打印数组元素时,它不会显示任何空格,但是当这些元素被传输到arrayList时,我会在每个元素之前获得这些空格,就好像它们在那里一样,因为实际字符串中有“/” 这是我的密码Java 当我对字符串使用split方法时,为什么会在字符串的数组列表中添加额外的空间,java,arraylist,split,Java,Arraylist,Split,我已经附上了我的代码和代码的输出。当我打印数组元素时,它不会显示任何空格,但是当这些元素被传输到arrayList时,我会在每个元素之前获得这些空格,就好像它们在那里一样,因为实际字符串中有“/” 这是我的密码 publicstaticvoidmain(字符串[]args){ 扫描器x=新扫描器(System.in); 字符串n=“/www/abc/pqr//com”; 字符串arr[]=n.split(“/”); ArrayList=新建ArrayList(); 对于(int i=0;i,我假
publicstaticvoidmain(字符串[]args){
扫描器x=新扫描器(System.in);
字符串n=“/www/abc/pqr//com”;
字符串arr[]=n.split(“/”);
ArrayList=新建ArrayList();
对于(int i=0;i,我假设您的问题是针对输出中的这些空白:
[, www, abc, pqr, ., com]
^ ^ ^ ^ ^
您看到的这些“空格”实际上不是列表中字符串的一部分,它们是在您通过System.out.println(list)
在ArrayList
上隐式调用toString()
时添加的
见:
返回此集合的字符串表示形式。字符串表示形式由集合元素的列表组成,这些元素按迭代器返回的顺序排列,用方括号([])括起来。相邻元素之间用“,”(逗号和空格)分隔.元素通过String.valueOf(对象)转换为字符串
因此,列表中实际的字符串
不包含这些空格,它们只是为了方便打印时查看而添加的
这是您更新的代码,它还解决了通过equals
而不是!=
正确比较字符串的问题。我还包括了一个isEmpty()
检查,以从列表中删除空的字符串
:
public static void main(String[] args) {
String n = "/www/abc/pqr/./com";
String arr[] = n.split("/");
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (!(arr[i].equals(".") || arr[i].isEmpty())) {
list.add(arr[i]);
}
}
System.out.println(list);
}
请不要在注释中添加代码。相反,您的问题是在注释中添加具有正确格式的代码。@maloomeister这与此问题有什么关系?我们讨论的是拆分行为,而不是==vs equals。@Subhanshutripath这样做,因为在您的原始字符串中,在第一个“/”之前有一个“空字符串”)1.这是意料之中的事behavior@Stultuske正确。我在发现!=”时添加了重复链接
当他们的注释中仍然有代码时。我认为这是他们的问题所在。元素中没有空格,但在输出过程中它显示为空格,可能是因为某些格式原因。如果您认为空格会导致任何问题,使用值时只需调用.trim()在元素上,它将删除任何额外的空间。@subhanshutripath我不会将代码放在注释中,而是放在您的问题中。这是不可读的
[www, abc, pqr, com]