Java 从字符串中解析特定单词

Java 从字符串中解析特定单词,java,string,parsing,Java,String,Parsing,对于我需要编写的Java程序,提供了一个字符串,该字符串可以包含以下任意顺序的任意数量的单词:char,double,int 所以它可能看起来像以下任何一种: “双倍战车” “charchar” “intdoublechardouble” 然后,我想将每个单词按照它们在字符串中出现的顺序存储在一个数组中。因此,“intdoublechardouble”的输入字符串将生成如下数组: {"int", "double", "char", "double"} 解析字符串的最佳方法是什么,以从中提取所有

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

所以它可能看起来像以下任何一种:

  • “双倍战车”
  • “charchar”
  • “intdoublechardouble”
  • 然后,我想将每个单词按照它们在字符串中出现的顺序存储在一个数组中。因此,
    “intdoublechardouble”
    的输入字符串将生成如下数组:

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

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

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

    如果您需要有效的解决方案来解决这个特定问题,这应该可以做到

    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;
    }
    
    公共对象提取字(字符串s){
    ArrayList数组=新的ArrayList();
    s=s。替换(“t”、“t”);
    s=s。替换(“r”、“r”);
    s=s。替换(“e”、“e”);
    StringTokenizer tokenizer=新的StringTokenizer,“,”;
    while(tokenizer.hasMoreTokens()){
    add(tokenizer.nextToken());
    }
    返回数组;
    }
    

    显然,这在一般情况下是行不通的。对于其他情况,我想您必须逐个字符遍历输入字符串,并将其与目标单词列表进行比较,正如您所建议的。

    您可以使用字符串的替换和拆分方法

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

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

    为什么不从最坏的方式开始,然后让人们把你带到最好的方式呢?这不是有效的方式。你试着先找到一个解决方案,然后当有些东西不起作用时,你会问一个特定的问题。在StackOverflow上发布“这是我的问题,请告诉我怎么做”被认为是离题的。我没有要求任何人为我编写代码,我只是想知道人们认为最有效、最简单的方法是什么。显然,最糟糕的方法是遍历字符串中的每个字符,看看当前序列是否与我要查找的任何单词匹配。谢谢你对一个合法问题投了反对票?我最终用了这个方法。谢谢!