gpt4 book ai didi

java - 在Java中分割字符串并附加到列表

转载 作者:行者123 更新时间:2023-12-02 13:30:41 27 4
gpt4 key购买 nike

用例:我试图提取括号内的参数并将其填充到 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 中的预期输出:

enter image description here

代码输出:

enter image description here

错误是不是垂直填充列表,而是作为一个组附加。请建议我如何纠正这个问题。

最佳答案

问题不在于您的 JList,而在于您的匹配器逻辑。

如果您始终知道您的“类型”将位于括号内,则可以执行以下操作。

// 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

关于java - 在Java中分割字符串并附加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43198190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com