【问题标题】:tokenize a string into a string array WITHOUT using split method in Java [closed]在Java中不使用split方法将字符串标记为字符串数组[关闭]
【发布时间】:2015-02-22 18:30:13
【问题描述】:

如何在不使用 java 中的 split 方法的情况下将字符串标记为字符串数组? 例如:

input:    String abc ="dog cat bird fish";
output:   String[] def={"dog","cat","bird","fish"}; 

【问题讨论】:

  • 为什么会有奇怪的要求?这个作业?我们不做作业...
  • 这个作业是不是说你不能用split方法?

标签: java arrays tokenize


【解决方案1】:

使用 StringTokenizer 可能最简单:

String abc ="dog cat bird fish";
   StringTokenizer strTok = new StringTokenizer(abc, " ");
   String[] def = new String[strTok.countTokens()];
   int count = 0;
   while(strTok.hasMoreTokens())
   {
       def[count++] = strTok.nextToken();
   }

【讨论】:

    【解决方案2】:

    你可以关注的是在java中使用Pattern api,

    private static final Pattern SPACE = Pattern.compile(" ");
    String[] arr = SPACE.split(str); // str is the string to be split
    

    您可以使用 StringTokenizer。

    StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
    String[] splited = new String[tokens.countTokens()];
    int index = 0;
    while(tokens.hasMoreTokens()){
        splited[index] = tokens.nextToken();
        ++index;
    }
    

    您将编写我自己的标记器 - 它最终可能会比可以查找多个标记的更通用的 StringTokenizer 更有效,并且您可以让它按照您的喜好进行操作。对于这样一个简单的用例,它可以是一个简单的实现。

    如果它有用,您甚至可以实现 Iterable 并通过强类型而不是 StringTokenizer 提供的枚举支持来获得增强的循环支持。如果您需要帮助编写这样一个野兽,请告诉我 - 这真的不应该太难。

    【讨论】:

      【解决方案3】:

      来自 Apache commons-lang3 的StringUtils#split 不直接在字符串上使用split,虽然拆分操作有点类似于split 函数,但没有使用正则表达式。

      这是code 供参考

      【讨论】:

        猜你喜欢
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-17
        相关资源
        最近更新 更多