启者
我在Java Netbeans工作。我试图使用正则表达式分割一个字符串(到一个字符串数组)。基本上,如果用户输入:
Hello World< 5>你好吗?雅虎>谷歌!
进入jTextArea,我希望上面的字符串输入一个名为arrayOfStringsToProcess
的数组进行进一步处理。在序列结束时,arrayOfStringsToProcess
的值应为:
{"Hello World", "5" , "How are you", "yahoo", "google!"}
我对那里是否有换行符无动于衷。
当我尝试(在netbeans中):
String inputFromTextField = "";
String regularExpressionToSplit = "<>";
String[] arrayOfStringsToProcess;
inputFromTextArea = jTextArea23.getText();
arrayOfStringsToProcess = inputFromTextArea.split(regularExpressionToSplit);
代码编译并执行,但从jTextArea23
获取的整个字符串被加载到arrayOfStringsToProcess
的第0个元素中,好像没有发生任何分裂。
据我所知,上面的代码在netbeans之外完成了这项工作,但netbeans根本不想将字符串与正则表达式分开。
最后,当我将“正则表达式”缩减为单个分隔符时,例如"<"
netbeans会以这种方式分割字符串:
{"Hello World", "5> How are you", "yahoo> google!"}
显然,这段代码会编译并执行,但不会产生我想要的输出。
有没有一种方法可以在Java netbeans中执行此操作而无需使用废话,例如计算字符串中<
和>
的数量,并将字符串一次拆分一个?我无法事先知道用户将在jTextArea23中输入多少这些字符。
我确信这个确切的问题已在某处被问过,答案就在那里。我只是不知道在我的搜索中使用哪些关键字。任何帮助将不胜感激,
布伦特。
答案 0 :(得分:1)
您需要使用的模式需要说:我想在>
或<
分开。这用regular expression表示|
字符。所以你可以使用模式<|>
。请注意,如果您还要分隔空格,可以添加\\s*
以匹配零个或多个空格。
public static void main(String[] args) {
String str = "Hello World <5> How are you < yahoo > google!";
String[] tokens = str.split("\\s*<\\s*|\\s*>\\s*");
System.out.println(Arrays.toString(tokens)); // prints "[Hello World, 5, How are you, yahoo, google!]"
}
答案 1 :(得分:0)
您当前的正则表达式<>
代表字符串"<>"
。如果您要分为<
或>
,则:
您正在寻找由OR
|
运算符
split("<|>")
您也可以使用character class
split("[<>]")