相关疑难解决方法(0)

Java String拆分删除了空值

我试图使用分隔符拆分值.但我发现了令人惊讶的结果

String data = "5|6|7||8|9||";
String[] split = data.split("\\|");
System.out.println(split.length);
Run Code Online (Sandbox Code Playgroud)

我期待得到8个值.[5,6,7,EMPTY,8,9,EMPTY,EMPTY] 但我只得到6个值.

任何想法和如何解决.无论EMPTY值在任何地方出现,它都应该在数组中.

java string split

262
推荐指数
4
解决办法
14万
查看次数

类String的split方法忽略分号分隔符

可能重复:
Java split()方法在结尾处删除空字符串?

在Java中,我使用String split方法拆分包含以分号分隔的值的字符串.

目前,我有以下一行在99%的情况下都有效.

String[] fields = optionsTxt.split(";");
Run Code Online (Sandbox Code Playgroud)

使用以下String时,一切都很完美:

"House;Car;Street;Place" => [House] [Car] [Street] [Place]
Run Code Online (Sandbox Code Playgroud)

但是当我使用下面的String时,split方法忽略最后两个分号.

"House;Car;;" => [House][Car]
Run Code Online (Sandbox Code Playgroud)

怎么了?或者有任何解决方法吗?

java split

14
推荐指数
1
解决办法
2万
查看次数

String类的split方法不包括尾随空字符串

可能重复:
Java split()方法在结尾处删除空字符串?

String类的split方法不包括它返回的数组中的尾随空字符串.我如何克服这个限制:

class TestRegex{
 public static void main(String...args){
  String s = "a:b:c:";    
  String [] pieces = s.split(":");

  System.out.println(pieces.length); // prints 3...I want 4.
 }
}
Run Code Online (Sandbox Code Playgroud)

java regex

9
推荐指数
1
解决办法
2584
查看次数

带分隔符的java字符串

我想通过分隔符"|"拆分String 在Java中获取String数组,这是我的代码:

String str = "123|sdf||";
String[] array = str.split("\\|");
Run Code Online (Sandbox Code Playgroud)

我将得到2个元素的数组:"123","sdf".我期望阵列有4个元素:"123","sdf","",""; 我可以用任何现有的课程吗?我也试过StringTokernizer,不起作用

java

4
推荐指数
1
解决办法
81
查看次数

Java的.split()方法角落案例:它们是什么?

答案,请看下面 - 士气:从不.split()单独打电话; 如果你想要理智的行为,总是给它一个-1的长度参数.但不是0!

对javadoc的Pattern.split()状态如下:

此方法返回的数组包含输入序列的每个子字符串,该子字符串由与此模式匹配的另一个子序列终止,或者由输入序列的末尾终止.

见证这段代码:

private static final Pattern UNDERSCORE = Pattern.compile("_");

public static void main(final String... args)
{
    System.out.println(UNDERSCORE.split("_").length);
}
Run Code Online (Sandbox Code Playgroud)

现在,引用javadoc,数组应该包含输入的子字符串(引用):

  • "由匹配此模式的另一个子序列终止":好吧,有一个 - 在下划线之前的空字符串(UNDERSCORE显然匹配);
  • 或"在输入序列结束时终止":也有一个:紧跟在下划线之后的空字符串.

然而,上面的代码打印出来0.为什么?这是一个已知的错误?(imnsho是的,见下文)还有哪些.split()不遵守合同的情况?(再见下文)

答案(右下方的解释性文字)

使用a时Pattern,单参数.split()方法相当于使用参数调用双参数方法0.

这就是错误所在.如果参数为0,则从结果中删除从数组末尾"向下"到第一个非空元素的所有空字符串.

如果在阅读本文之前,你不知道脑死亡设计的决定是什么,现在你知道了.这是默认行为更加危险.

解决方案是始终使用方法的完整形式.split()并给它一个负长度参数.这里,选择-1.在这种情况下,.split()表现得很明智:

private static final Pattern UNDERSCORE = Pattern.compile("_");

public static void main(final String... args)
{
    System.out.println(UNDERSCORE.split("_").length);
    System.out.println(UNDERSCORE.split("__").length);
    System.out.println(UNDERSCORE.split("_x_").length); …
Run Code Online (Sandbox Code Playgroud)

java split

3
推荐指数
1
解决办法
717
查看次数

当字符串是所有换行符时,Java按换行符分割

当我有一个类似的字符串\n\n\n,然后我分手时\\n,我明白了0.为什么是这样?

public class Test {

     public static void main(String []args){
        String str = "\n\n\n";
        String[] lines = str.split("\\n");
        System.out.println(lines.length);
     }
}
Run Code Online (Sandbox Code Playgroud)

您可以将代码复制并粘贴到CompileOnline中.

java regex

1
推荐指数
1
解决办法
112
查看次数

Java中的字符串拆分函数

我有一个String,我想把它拆分为","

如果假设我有一个字符串,

 String test = "aa,bb,cc"; 
Run Code Online (Sandbox Code Playgroud)

现在我可以分开了,

String[] spl = test.split(",");
Run Code Online (Sandbox Code Playgroud)

spl.length3

如果假设我的字符串是

 String test = ",,,";
Run Code Online (Sandbox Code Playgroud)

这里分割的String 长度0.但我的预期答案是3.我的测试String是dynamaic值,它可能会有所不同,现在想我有一个类似的字符串

String test = ",aa,dd,,,,,ff,gg"

现在,分裂的数组长度为4.但我预期的答案是9 而我需要通过拆分""和我需要的氨基酸在位置SPL [1]DD位置SPL [2]FF位置SPL [7]

有人可以提出解决这个问题的建议吗?

java string android

1
推荐指数
1
解决办法
234
查看次数

java最后分裂缺少逗号

我的字符串(str)是

",2016-06-29,SNET Closed End Municipal Bond Fund,CEFMX,,,,1272.772883,1063620.586,835.6719414,77,,0,,,,"
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我String arr[] = str.split(",");得到的是长度为13而不是17.分裂后不考虑0之后的逗号.

我在这里错过了什么?

java regex split comma

1
推荐指数
1
解决办法
586
查看次数

为什么java String.split 忽略最后一个字符是基于最后一个字符拆分

如果我运行以下代码:

"testx".split("x")
Run Code Online (Sandbox Code Playgroud)

期望我们会得到{"test", ""},但 java 正在返回{"test"}

"xtest".split("x")返回{"", "test"}。任何想法为什么它的行为很奇怪(或)我有错误的理解吗?

这是我的 JDK 和系统信息:

JRE:1.8.0_152-release-1024-b6 amd64

JVM:JetBrains sro 的 OpenJDK 64 位服务器 VM

Linux 4.4.0-34-generic

java openjdk java-8

1
推荐指数
1
解决办法
1955
查看次数

标签 统计

java ×9

split ×4

regex ×3

string ×2

android ×1

comma ×1

java-8 ×1

openjdk ×1