如何在Java中拆分特定字符串

如何在Java中拆分特定字符串,java,regex,string,split,Java,Regex,String,Split,我试图创建一个程序,将给定的字符串拆分为多个部分,然后如果它有两个或更多连续的大写字母,则将其全部转换为小写。在分割字符串之后,它将去掉所有非字母字符,将其全部转换为小写,然后将非字母字符放回。我有将其全部转换为小写的逻辑,但它并没有按照我想要的方式拆分字符串。目前,我正在努力使其: 在有两个或两个以上连续大写字母的地方拆分字符串,然后使其全部为小写(这是一个测试) 在有“!”、“?”或“.”的位置拆分字符串(此.is!a?测试) 在有空格的地方拆分字符串(这是一个测试) 我现在要做的事情如

我试图创建一个程序,将给定的字符串拆分为多个部分,然后如果它有两个或更多连续的大写字母,则将其全部转换为小写。在分割字符串之后,它将去掉所有非字母字符,将其全部转换为小写,然后将非字母字符放回。我有将其全部转换为小写的逻辑,但它并没有按照我想要的方式拆分字符串。目前,我正在努力使其:

  • 在有两个或两个以上连续大写字母的地方拆分字符串,然后使其全部为小写(这是一个测试)
  • 在有“!”、“?”或“.”的位置拆分字符串(此.is!a?测试)
  • 在有空格的地方拆分字符串(这是一个测试)
我现在要做的事情如下:

其中“[A-Z]{2}”表示两个连续的大写字母,但我不知道如何包含其余的。{Punc}只有当我可以排除除“!”、“?”、“”之外的所有内容时才有效

还有,我用的是BukkitAPI

例如: 如果用户输入了上述所有示例(在项目符号中),则这些示例应为:

  • 这是一个测试
  • 这是!。测试
  • 这是一个测试

如果需要多个分隔符,请使用

String[] message = chat.split("regex|regex|regex");
所以我假设它最终会是这样的:

String[] message = chat.split("[A-Z]{2}|[.!?]|[\s]");


使用测试:

在进行任何其他讨论之前,您是否确定
拆分(“[A-Z]{2}”)
符合您的预期?它真正做的是使用任意两组大写字母作为分隔符。例如,对于以下字符串:
我喜欢在洛杉矶吃比萨饼。而在底特律喝葡萄酒
,则分为:
I
ke吃披萨
。在底特律喝葡萄酒
。为了更清楚,请编辑您的帖子,添加预期的结果,例如字符串。对不起,我忘了提到这一部分。上述代码行的目的是简单地检查这些条件是否满足。然后它会将所有内容转换为小写字符串,所以您的示例是
我喜欢在洛杉矶吃比萨饼。在底特律喝葡萄酒。
好的,但要注意,分隔符不会包含在任何分割中。@user3672163:检查我的回答,事实上,避开了点。它是正则表达式中的一个特殊字符。