【问题标题】:String.split() method - order of token in the returned String arrayString.split() 方法 - 返回的字符串数组中标记的顺序
【发布时间】:2015-03-27 00:13:57
【问题描述】:

我正在开发一个必须处理自定义变量的应用程序aVar-

String aVar = price/barcode/area1/true  // varName/varType/varScope/tracable

aVar 中可能添加了一些其他属性,由 ('/') 分隔。 要获得varName, varType, varScope 等我必须做以下事情,请参阅下面的代码 -

      String[] token = aVar.split("/");  

      String varName = token[0];
      String varType = token[1];
      String varScope = token[2];
      String traceable = token[3];

在这里您可以看到varName 取自token[0],即pricevarType 取自token[1],即“条形码”等等。在这里我假设 - 拆分后 varName 总是在 token[0] 中,varType 总是在 token[1] 中等等。 现在我的问题是 - split() 方法返回的 String 数组是否总是包含 String 令牌,它们的出现顺序是(价格-->条形码-->area1-->true)?

我已经用一些输入测试了几次,发现订单保持不变。但我不确定 ALWAYS 是否适用于 VERY LONG 字符串。

【问题讨论】:

  • YES 它是一个从源字符串的第一个值到最后一个值的有序数组。
  • 我看不出该代码是如何编译的——String.split 接受 char 并没有重载。你的意思是aVar.split("/")
  • @Jon Skeet,很棒的发现。这是一个错字(我刚刚改正)来自习惯于 char 的 java script split() 版本。
  • 这就是为什么创建一个简短但完整的程序,编译并运行它,然后将 that 复制并粘贴到问题中的原因。它避免了这样的问题。

标签: java arrays string split string-split


【解决方案1】:

假设您实际调用的是String.split(String),该方法的文档包括:

此方法的工作方式就像通过使用给定表达式和零限制参数调用两个参数 split 方法一样。因此,尾随的空字符串不包含在结果数组中。

该方法的文档包括:

此方法返回的数组包含此字符串的每个子字符串,这些子字符串由与给定表达式匹配的另一个子字符串终止或以字符串结尾终止。 数组中的子字符串按照它们在该字符串中出现的顺序排列。如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即该字符串。 p>

(强调我的。)

所以是的,它们会按顺序退回,保证。

【讨论】:

    【解决方案2】:

    split() 方法返回的 String 数组是否总是按照出现的顺序包含 String 标记(price-->barcode-->area1-->true)?

    总之——是的。 String.split 维护输入字符串的顺序。

    【讨论】:

      【解决方案3】:

      正如您在javadoc 中看到的,结果有一个顺序:

      数组中的子字符串按照它们出现的顺序排列 这个字符串

      【讨论】:

        【解决方案4】:

        根据javadoc 这里:

        The substrings in the array are in the order in which they occur in this string.
        

        注意链接中的The substrings in the array are in the order in which they occur in this string. 行。

        【讨论】:

          猜你喜欢
          • 2015-06-09
          • 2011-10-24
          • 2013-07-18
          • 1970-01-01
          • 2020-04-28
          • 1970-01-01
          • 2021-04-26
          • 1970-01-01
          • 2012-02-05
          相关资源
          最近更新 更多