如何在JAVA中查找字符串中遇到的分隔符

如何在JAVA中查找字符串中遇到的分隔符,java,string,Java,String,我用Java编写了一个简单的程序,它可以处理给定的字符串 输入字符串有一些非字母分隔符。我使用了字符串标记器来读取和操作字符串中的单个单词 现在我需要用同一组分隔符重新构造这个被操纵的字符串。如果有人能建议我如何识别分隔符,我将不胜感激 换句话说,这就是输入: Text1 Delimiter1 Text2 Delimiter2 Text3 Delimiter3 Text4 Delimiter4 我的代码就是这样做的: 新文本1新文本2新文本3新文本4 我使用字符串标记器以这种方式标识下一个标记:

我用Java编写了一个简单的程序,它可以处理给定的字符串

输入字符串有一些非字母分隔符。我使用了字符串标记器来读取和操作字符串中的单个单词

现在我需要用同一组分隔符重新构造这个被操纵的字符串。如果有人能建议我如何识别分隔符,我将不胜感激

换句话说,这就是输入:

Text1 Delimiter1 Text2 Delimiter2 Text3 Delimiter3 Text4 Delimiter4

我的代码就是这样做的:

新文本1新文本2新文本3新文本4

我使用字符串标记器以这种方式标识下一个标记:

StringTokenizer st = new StringTokenizer(str, ", 0123456789(*&^%$#@!-_)");
但是现在我想确定遇到的分隔符,以便构建新字符串

这就是我真正想要的:

NewText1定界符1 NewText2定界符2 NewText3定界符3 NewText4 Delmiter4


您可以按照以下步骤进行操作:

String dels = "-, 0123456789(*&^%$#@!_)";
String specs = "[" + dels + "]+";
String letts = "[^" + dels + "]+";
String text = "one, two - three! four";
String[] words = text.split( specs );
String[] delim = text.split( letts );
请注意,在DEL中,连字符必须在前面。如果要添加
[
]
^
必须更加小心-检查java.util.regex.Pattern中的javadoc

组成原始字符串没有特别的问题


带有第三个参数的StringTokenizer的缺点是,它将每个分隔符作为长度为1的单独标记返回。

根据您使用的java版本,StringTokenizer也可以将布尔值作为第三个参数;如果该布尔值为true,它也将保留分隔符。如果这对您不起作用,我会尝试使用正则表达式来代替。@GregoryBasior请参阅我对您的建议的评论。regex确实更好。谢谢Greg;带有布尔标志的构造函数帮助我解决了这个问题。我想用正则表达式也可以,但我还没有试过。