从字符串中解析特定单词

时间:2014-02-06 17:40:18

标签: java string parsing

对于我需要编写的Java程序,我提供了一个字符串,可以按任意顺序包含以下任意数量的单词:chardoubleint

所以它看起来像这些:

  1. "charintdouble"
  2. "charchar"
  3. "intdoublechardouble"
  4. 然后我想按照它们在字符串中出现的顺序将每个单词存储在数组中。因此,"intdoublechardouble"的输入字符串将产生如下所示的数组:

    {"int", "double", "char", "double"}
    

    解析字符串以获取所有单词的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

我首先考虑如何在现实生活中做到这一点,并尝试将其转换为Java算法。对于字符串数组string.split中的每个元素,字符串{"char", "int", "double"}的效率稍低,并且string.split创建的所有标记都按正确的顺序排列。

答案 1 :(得分:0)

如果您需要针对此特定问题的有效解决方案,这应该可以解决问题

public Object extractWords(String s) {

    ArrayList<String> array = new ArrayList<String>();

    s = s.replace("t", "t,");
    s = s.replace("r", "r,");
    s = s.replace("e", "e,");

    StringTokenizer tokenizer = new StringTokenizer(s, ",");
    while (tokenizer.hasMoreTokens()) {
        array.add(tokenizer.nextToken());
    }
    return array;
}

显然,这不会起作用。对于其他情况,我猜你必须通过char遍历输入字符串char并将其与目标单词列表进行比较,如你所建议的那样。

答案 2 :(得分:0)

您可以使用string

的replace和split方法
  String str="intdoublechardouble";
    str=str.replace("char", "char-").replace("double", "double-").replace("int", "int-");
    String[] tokens=str.split("-");

现在代币包含[int, double, char, double]