Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用2个参数多次拆分一个句子?_Java - Fatal编程技术网

Java 如何使用2个参数多次拆分一个句子?

Java 如何使用2个参数多次拆分一个句子?,java,Java,我有个问题。下面的字符串src将根据ArrayList中指定的分隔符进行拆分。为了进一步拆分到单词,每个部分拆分都必须放入一个数组中。然而,我的问题是,不是cate,而?是cate。如果字符串src中存在列表中的任何两个不同分隔符,我就会遇到这个问题。你能告诉我我的代码有什么问题吗?或者告诉我一种更简单的分句方法。谢谢你抽出时间 public class temp { public static void main(String[] args) { boolea

我有个问题。下面的字符串
src
将根据
ArrayList
中指定的分隔符进行拆分。为了进一步拆分到单词,每个部分拆分都必须放入一个数组中。然而,我的问题是,
之后的code>不是cate,而
是cate。如果字符串
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));
    }
}
公共类临时
{
公共静态void main(字符串[]args)
{ 
布尔标志=假;
int j;
字符串字;
ArrayList分隔符=新的ArrayList();
分隔符。添加(“!”);
分隔符。添加(“.”);
分隔符。添加(“?”);
String src=“大家好!今天是个好日子?”;
字符串部分[]=新字符串[src.length()];
字符串mot[]=新字符串[src.length()];
字符串温度;

对于(int i=0;i显然,“all”之后的“!”不会被分割,因为在取出“!”之后,您将分隔字符串存储在“parts”中,但稍后您将在“src”上执行分隔操作,其中包含原始字符串,包括“!”

更新

我发现这很容易…只需创建一个正则表达式字符串,如:

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

输出:[大家好,今天是个好日子]

parts.toString()的目的是什么;
?您对该方法调用的结果没有做任何处理。请检查您的代码流,因为您的代码没有按照您提到的要求执行,因此似乎需要修改您的程序。有关定界操作的参考,请检查:-是的,我看到了,它没有按我想要的方式工作。谢谢您的时间和支持努力,谢谢you@zfk16如果答案回答了你的问题,请在上面标出