【发布时间】:2011-02-26 17:50:29
【问题描述】:
我有一个带有输入分隔值的TextArea:
例如:
价值1 价值2 价值3 价值4 价值5有没有一种快速的方法可以将它们放入String 数组中
String[] newStringArray = ???
【问题讨论】:
-
“新行分隔值”会比 输入分隔值 更清晰
我有一个带有输入分隔值的TextArea:
例如:
价值1 价值2 价值3 价值4 价值5有没有一种快速的方法可以将它们放入String 数组中
String[] newStringArray = ???
【问题讨论】:
使用String.split()。如果您的 TextArea 被命名为 textArea,请执行以下操作:
String[] values = textArea.getText().split("\n");
【讨论】:
.split("\n+")。
String.split() 将正则表达式作为其第一个参数。如果您以前没有遇到过它们,那么它们非常值得学习。这是我有一段时间拒绝学习的东西,现在我很了解它们,我每天都在使用它们。
你想使用String.split(String regex):
返回:通过围绕给定正则表达式的匹配拆分此字符串计算的字符串数组
所以,也许是这样的:
String[] newStringArray = textAreaContent.split("\n");
这会将textAreaContent 字符串拆分为"\n" 的匹配项,这是Swing 文本编辑器的规范化换行符分隔符(在javax.swing.text.DefaultEditorKit API 中指定):
[...] 当文档在内存中时,
"\n"字符用于定义换行符,而不管文档在磁盘上时如何定义换行符。因此,出于搜索目的,应始终使用"\n"。
正则表达式总是可以根据您的特定需求制定(例如,您想如何处理多个空行?)但是这种方法可以满足您的需要。
String[] parts = "xx;yyy;z".split(";");
for (String part : parts) {
System.out.println("<" + part + ">");
}
打印出来:
<xx>
<yyy>
<z>
这个忽略多个空行:
String[] lines = "\n\nLine1\n\n\nLine2\nLine3".trim().split("\n+");
for (String line : lines) {
System.out.println("<" + line + ">");
}
打印出来:
<Line1>
<Line2>
<Line3>
【讨论】:
DefaultEditorKit 文档 (java.sun.com/javase/6/docs/api/javax/swing/text/…) 建议将 TextArea 的行尾标准化为 '\n'。