当前位置: 首页 > 知识库问答 >
问题:

java拆分结果未知

徐高韵
2023-03-14

对于以下代码,

>

那么为什么“b”,“and”,“1”后面没有空字符串呢?

    String[] splitStrs = "booo:and:fooo1o".split("o", -1);  
    System.out.println(splitStrs.length);  
    for (int i=0; i<splitStrs.length; i++) {  
        System.out.println("\"" + splitStrs[i]+ "\"");  
    }

输出为:

8
"b"
"
"
": and: f"
"
""
"1"
"

共有3个答案

钦景胜
2023-03-14

公共字符串[]拆分(字符串正则表达式,整数限制)参数:

regex–一个定界正则表达式

极限-由此产生的阈值

极限参数可以有3个值:

  • 极限

有关拆分的更多信息,请访问Geeksforgeks网站。

“booo:and:fooo1o”。拆分(“o”,-1);

为什么位置2,3,5,6,8有空字符串?

由于限制为-1,我们可以将其拆分任意次数。当使用“o”作为正则表达式时,它将给出它之前的所有值,因为没有值返回空字符串

那么为什么“b”,“and”,“1”后面没有空字符串呢?

没有空字符串,因为在上一个匹配的o之后有字符。

class Split{
    public static void main(final String ... $){
        var out = System.out;
        final String s = "ooa";
        for(final String str : s.split("o", -1))
            out.println("\""+str+"\"");

    }
}
$ javac Split.java && java Split
""
""
"a"

为什么会出现这种输出?

当第一个匹配发生时@index 0也是第一个字符,它返回前面的字符串,但是因为没有字符串,它返回一个空字符串。

然后,当第二次与o@index 1匹配时,它返回第一次匹配之后、索引1之前的字符串。因为没有字符,所以返回一个空字符串。

之后返回a。

鞠边浩
2023-03-14

split方法将查找所有需要字符的地方(在您的示例“o”中),在当前“o”和下一个“o”之间放置一个新的(子)字符串,在数组中不包含“o”字符,然后继续整个字符串。

例如,当您有“oo”时,它将是“”,因为这两个“o”字符之间没有任何内容。

让我们举个例子。你有一句话:“哦,你好,安娜!我从2010年起就没见过你!”在每个有“a”字符的地方拆分这个字符串。

首先,从第一个字符开始,然后找到下一个字母“a”的位置,它位于第14个索引中。将字符串的一部分从起始位置移到“a”的位置,并将其添加到数组中。数组的第一个元素看起来像“哦,你好,安”(“A”和“A”是不同的字符)。然后从我找到的“a”(第14个索引)开始,找到下一个“a”,在我们的例子中是第20个索引。从第一个和第二个“a”中提取字符串的一部分,并将其复制到数组中。然后这个过程一直持续到字符串结束。

结果将是:

"Oh, hello Ann"
"! I h"
"vent seen you since 2010s!"

如果我们在每个“n”上拆分相同的字符串,通过使用相同的逻辑,我们将得到:

"Oh, hello A"
""
"a! I have"
"t see"
" you si"
"ce 2010s"

我在第二部分得到一个空字符串的原因是因为在“…安娜…”,这两个“n”字之间没有任何区别

以下是一些例子:https://www.geeksforgeeks.org/split-string-java-examples/

冀胤运
2023-03-14

为什么位置2,3,5,6,8有空字符串?

在“o”上拆分时,“ooo”中的o之间没有任何内容,因此字符串为空。

那么为什么“b”,“and”,“1”后面没有空字符串呢?

但在输出的末尾有一个空字符串,即“1”后面。

根据文档,负的第二个参数具体表示“未丢弃尾随的空字符串”。

总是阅读文档。

 类似资料:
  • 我需要根据发票编号拆分pdf。例如发票号D0000003011,所有pdf页面应合并为单个pdf,依此类推。我怎样才能做到。..

  • 它是这样的: 插入some_table(col1,col2,col3,col4) 选择col1、col2、my_func(col3)为new_col3、col4 现在我需要使用相同的逻辑返回两个值而不是一个值。 我可以简单地编写另一个函数来执行相同的逻辑并返回第二个值,但这将是昂贵的,因为该函数从一个大的历史表中进行选择。 我不能与历史表进行连接,因为该函数没有执行简单的select。

  • 我的目标是通过API调用必应新闻搜索来获得匹配某个查询的结果。 我在用Zapier。我使用的是代码步骤,它可以采用Python或JavaScript。我目前有Python代码来调用API,如下所示... 这个很管用。它成功地调用并获得结果。 每个代码示例的最后一行似乎掌握着关键...在Javascript中,映射某些东西某些东西...? 下面是一个响应示例,每个请求...

  • 问题内容: 我想从给定的字符串中找到所有数字(所有数字都与字母混合但用空格隔开)。我尝试拆分输入字符串,但是当检查结果数组时,我发现有很多空字符串,所以如何更改我的拆分正则表达式以删除此空白? 结果: 我知道我可以遍历数组并删除空结果。但是,仅使用正则表达式怎么办? 问题答案: 不要使用。使用将返回所有匹配子字符串的方法。你可以做到 将打印 根据您的正则表达式,看来您的目标也就是要删除前导零,例如

  • 我有多行这样的代码,我试图将它们拆分并添加到3个不同的列表中。“~”将它们分开。 姓名~年龄~单词 姓名~年龄~单词 我用下面的代码将其拆分。 我有ArrayList年龄,ArrayList名字,ArrayList。。。。 当我进行拆分[0]时,它确实有效,并给出了名称。 但是当我做分裂[1]的时候,它会给我一个断点错误。 有什么帮助吗?你能给我推荐一个更好的方法吗?

  • 我试图在使用RESTendpoint的骆驼路由中构建一个分割/聚合模式。它需要一个包含请求详细信息列表的请求对象。我想并行处理请求详细信息,然后将聚合结果返回给调用方。我希望这是一个同步调用。 这是我的路线中的代码。 我希望调用的结果是聚合调用(我的响应对象)的输出。但我实际上得到的是REST调用返回的请求对象?? 当我放入更多的日志语句时,我可以看到Split调用正在触发多个线程,这很好。我可以