在 Java 中拆分字符串并附加到列表
Split string in Java and append to list
用例:我正在尝试提取括号内的参数并将其填充到 jList。
输入:
title(a1, a3)
代码:
static ArrayList variableList = new ArrayList();
Matcher m = Pattern.compile("\(([^)]+)\)").matcher(result.toString().trim());
while(m.find())
{
if (!variableList.contains(m.group(1).trim()))
{
variableList.add(m.group(1).trim());
}
}
DefaultListModel lista1 = new DefaultListModel();
for (int i = 0;i<variableList.size();i++)
{
if (!lista1.contains(variableList.get(i)))
{
lista1.addElement(variableList.get(i));
}
}
jList.setModel(lista1);
revalidate();
repaint();
jList 中的预期输出:
代码输出:
错误不是垂直填充列表,而是作为一个组附加。请建议我如何纠正此问题。
问题不在您的 JList 中,而是在您的匹配器逻辑中。
如果您始终知道您的 "types" 将在括号内,您可以执行以下操作。
// Declare lists
DefaultListModel<String> lista1 = new DefaultListModel<String>();
ArrayList<String> variableList = new ArrayList<String>();
JList<String> jList = new JList<String>();
String result = "type(t1, t2)";
// Get string within parenthesis
result = result.substring(result.indexOf('(') + 1, result.indexOf(')'));
// Split into elements
String[] types = result.split(",");
// For each, add to list if not duplicate
for (int i = 0; i < types.length; i++)
{
String type = types[i].trim();
if (!variableList.contains(type))
{
variableList.add(type);
lista1.addElement(type);
}
}
jList.setModel(lista1);
// Add to frame/revalidate/repaint as needed
此外,参数化您的 JList 和 DefaultListModel。参见 here
用例:我正在尝试提取括号内的参数并将其填充到 jList。
输入:
title(a1, a3)
代码:
static ArrayList variableList = new ArrayList();
Matcher m = Pattern.compile("\(([^)]+)\)").matcher(result.toString().trim());
while(m.find())
{
if (!variableList.contains(m.group(1).trim()))
{
variableList.add(m.group(1).trim());
}
}
DefaultListModel lista1 = new DefaultListModel();
for (int i = 0;i<variableList.size();i++)
{
if (!lista1.contains(variableList.get(i)))
{
lista1.addElement(variableList.get(i));
}
}
jList.setModel(lista1);
revalidate();
repaint();
jList 中的预期输出:
代码输出:
错误不是垂直填充列表,而是作为一个组附加。请建议我如何纠正此问题。
问题不在您的 JList 中,而是在您的匹配器逻辑中。
如果您始终知道您的 "types" 将在括号内,您可以执行以下操作。
// Declare lists
DefaultListModel<String> lista1 = new DefaultListModel<String>();
ArrayList<String> variableList = new ArrayList<String>();
JList<String> jList = new JList<String>();
String result = "type(t1, t2)";
// Get string within parenthesis
result = result.substring(result.indexOf('(') + 1, result.indexOf(')'));
// Split into elements
String[] types = result.split(",");
// For each, add to list if not duplicate
for (int i = 0; i < types.length; i++)
{
String type = types[i].trim();
if (!variableList.contains(type))
{
variableList.add(type);
lista1.addElement(type);
}
}
jList.setModel(lista1);
// Add to frame/revalidate/repaint as needed
此外,参数化您的 JList 和 DefaultListModel。参见 here