我正在尝试使用拆分(“;”)将字符串转换为数组 。我这样做:
String str = "ggg;123;q;w;;";
String[] strArr = str.split(";");
返回数组:
["ggg","123","q","w"]
但我想得到回报:
["ggg","123","q","w","",""]
字符串可以是“ggg;123;;w;;df”或“ggg;123;;ds;” 。
当“;”之间没有值时,我想在数组中创建一个空元素。这可能吗?
谢谢你的帮助!
如果你看看拆分(String regex)
的留档,你会发现(强调我的)
此方法的工作方式类似于使用给定表达式调用双参数split方法和一个极限参数zero方法。因此,结果数组中不包括尾随的空字符串。
现在,如果您看到这个双参数split(String regex,int limit)方法文档,您会发现
如果限制
n大于零,则模式最多应用n-1次,数组的长度将不大于n,数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入。如果n
是非正数,则模式将被应用尽可能多的次数,数组可以有任何长度。如果n为零,则模式将被应用尽可能多的次数,数组可以有任何长度,并且尾随的空字符串将被丢弃。
所以,为了防止删除尾随的空字符串而不限制结果数组的长度,您需要使用非正值作为限制,而不是
split(";")
使用
split(";", -1)
Guava图书馆提供了一个更具可读性的替代方案。
默认情况下,包含空字符串。
String str = "ggg;123;q;w;;";
List<String> split = Splitter.on(";").splitToList( str );
可以使用可读的方法名称省略空字符串:
String str = "ggg;123;q;w;;";
List<String> split = Splitter.on(";").omitEmptyStrings().splitToList( str );
像那样使用
String[] strArr = str.split(";",-1);
System.out.println(Arrays.toString(strArr));
我有以下字符串: 如果你只是打印这个,它会像这样输出(当然不会“逐字”打印): 调用方法split(“\n”)时,我希望获取新行(
我正在使用拆分一个字符串。我收到的字符串有这样的结构: 其中<代码> 除非是空字符串,否则这可以正常工作。在这种情况下,只会跳过数据。 我想要一个字符串,如<代码>[数据] 我该怎么做?
问题内容: 因此,stdin将一串文本返回到列表中,并且多行文本都是列表元素。您如何将它们全部分割成一个单词? 想要的输出: 问题答案: 您可以使用简单的列表推导,例如: 这将产生:
我有一个字符串,,我想把它分成两个字符串: 这意味着第一个字符串将包含之前的字符,第二个字符串将包含之后的字符。我还想检查字符串中是否有。如果没有,我会抛出一个异常。我该如何做到这一点?
我想拆分到一个数组4使用 这是我的代码: 但是,结果标记是一个空数组:[],而不是我想要的4的数组。 我已经测试过稍微更改一下str: 这次的结果标记是<代码>[“”、“”、“”、“”、“”1“]。这接近我想要的,但我真的不想在进行拆分之前添加这个“1”。 问题基本上是字符串。如果split()只包含空元素,它将返回空数组。 你能帮我解决这个问题吗?