如何用2个参数将句子拆分不止一次



我有问题。我有以下字符串src根据ArrayList中的指定定系数进行分配。每个部分拆分都必须在数组中进行进一步分配到单词。但是,我的问题是all之后的!?时不符合。如果列表中的任何两个不同的定分列在字符串src中都存在,我会遇到这个问题。您能告诉我我的代码出了什么问题,还是告诉我一种更轻松的执行句子分裂的方法。谢谢你的宝贵时间。

public class temp
{
    public static void main(String[] args)
    { 
        boolean flag = false;
        int j;
        String word;
        ArrayList <String> delimiter = new ArrayList <String>();
        delimiter.add("!");
        delimiter.add(".");
        delimiter.add("?");
        String src = "Hello all! today is a great day?";
        String parts[] = new String[src.length()];
        String mot[] = new String[src.length()];
        String temp;
        for(int i=0;i<src.length();i++)
        {
            j=0;
            if(src.charAt(i) == delimiter.get(j).charAt(0))
            {
                System.out.println("first");
                parts = src.split("!");
                parts.toString();
        }
            j++;
            if(src.charAt(i) == delimiter.get(j).charAt(0))
            {
                System.out.println("second");
                parts = src.split("\.");
                parts.toString();
            }
            j++;
            if(src.charAt(i) == delimiter.get(j).charAt(0))
            {
                System.out.println("third");
                parts = src.split("\?");
                parts.toString();
            }
        }
        System.out.println(Arrays.toString(parts));
        for(int i=0;i<parts.length;i++)
        {
            word = parts[i];
            mot = word.toLowerCase().split(" ");
        }
        System.out.println(Arrays.toString(mot));
    }
}

我的输出如下:首先

第三[大家好!今天是个好日子][你好,所有!

显然是"!"在"全部"之后,由于"服用"!您正在将划界字符串存储在"零件"中,但后来您正在执行" SRC"上的划界操作,其中包含原始字符串,包括"!"

update

我弄清楚了这很容易...只需创建一串正则绳索,例如:

    String regex = "[!.?]";
    String src = "Hello all! today is a great day?";
    String mot[] = src.split(regex);
    System.out.println(Arrays.toString(mot));

输出:[你好,今天是美好的一天]

最新更新