Java拆分问题
用户将在文本框中以分号作为分隔符输入电子邮件ID。在存储到数据库之前,我想验证输入的电子邮件id是否有效。所以我开始使用split。但问题是,当用户输入像Java拆分问题,java,split,Java,Split,用户将在文本框中以分号作为分隔符输入电子邮件ID。在存储到数据库之前,我想验证输入的电子邮件id是否有效。所以我开始使用split。但问题是,当用户输入像这样的值时xxxx@gmail.com;;;',在本例中,我希望验证以删除不需要的字符 我想split会返回长度为4,然后我可以检查是否为空或null。但将返回长度拆分为一个。因此,除了存储在数据库中的额外字符之外。解决此问题的任何帮助?默认情况下,split方法在拆分文本时会丢弃尾随的空字符串。如果确实需要尾部空字符串,请使用重载版本的--第
这样的值时xxxx@gmail.com;;;',代码>在本例中,我希望验证以删除不需要的字符
我想split会返回长度为4,然后我可以检查是否为空或null。但将返回长度拆分为一个。因此,除了存储在数据库中的额外字符之外。解决此问题的任何帮助?默认情况下,split
方法在拆分文本时会丢弃尾随的空字符串。如果确实需要尾部空字符串,请使用重载版本的--第二个参数limit
可以是负数,它告诉split
不要丢弃尾部空字符串
但我不明白你为什么想要后面的空字符串。split
方法通常会为您丢弃它们。使用split()后,您将在一个数组中拥有所有假定的电子邮件ID,并可以验证它们。验证后,使用数组重新生成字符串,而不是使用原始字符串。这样就消除了所有重复的分号。在建筑中使用StringBuffer,它连接多个字符串的效率略高。这样做可以验证并获得长度
String values = textBox1.getText();
String[] split = values.split(";");
System.out.println(split.length);
for(String s : split) {
if(null != s)
//do junk
}
是否需要以下帮助:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test{
public static void main(String args[]){
String line = "'xxxx@gmail.com;;;',";
if(line.contains("@")){
int x=0;
for (String valueBetweenCommas: line.split("'", 2)){
x++;
if(x==2){
Pattern p = Pattern.compile("[\\w]*([.+]??[\\w]+?)+?[\\w]@[\\w]+[.][a-zA-Z]{2,5}+$");
Matcher m = p.matcher(valueBetweenCommas);
boolean result = m.matches();
if(result){
//add to database
}else{
break;
}
}
}
}
}
首先,对本质上是列表的内容使用JTextField
似乎不切实际。您应该做的是创建一个JList
,每个项目代表一封电子邮件,然后添加/删除按钮,通过DefaultListModel
修改列表。之后,要检索所有元素(电子邮件地址),您可以调用.elements()
方法并遍历它们
所以,它看起来像这样:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class EmailList extends JPanel implements ActionListener{
private final JList<String> list;
private final DefaultListModel<String> model;
private final JScrollPane scroll;
private final JButton addButton;
private final JButton removeButton;
private final JPanel buttonPanel;
public EmailList(){
super(new BorderLayout());
addButton = new JButton("Add");
addButton.addActionListener(this);
removeButton = new JButton("Remove");
removeButton.addActionListener(this);
buttonPanel = new JPanel(new GridLayout(1, 2, 5, 0));
buttonPanel.add(addButton);
buttonPanel.add(removeButton);
model = new DefaultListModel<>();
list = new JList<>();
list.setModel(model);
scroll = new JScrollPane(list);
add(buttonPanel, BorderLayout.NORTH);
add(scroll, BorderLayout.CENTER);
}
private boolean valid(final String email){
//see if email is valid in here
return true;
}
public List<String> emails(){
final List<String> emails = new LinkedList<>();
final Enumeration<String> elements = model.elements();
while(elements.hasMoreElements())
emails.add(elements.nextElement());
return emails;
}
public void actionPerformed(final ActionEvent e){
final Object source = e.getSource();
if(source.equals(addButton)){
final String input = JOptionPane.showInputDialog(null, "Enter an email address");
if(input == null || input.trim().isEmpty())
return;
final String email = input.trim();
if(!valid(email)){
JOptionPane.showMessageDialog(null, "That email is not valid");
return;
}
model.addElement(email);
list.repaint();
}else if(source.equals(removeButton)){
final int i = list.getSelectedIndex();
if(i < 0)
return;
model.removeElementAt(i);
list.repaint();
}
}
}
导入java.awt.BorderLayout;
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.Enumeration;
导入java.util.LinkedList;
导入java.util.List;
导入javax.swing.DefaultListModel;
导入javax.swing.JButton;
导入javax.swing.JList;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
公共类EmailList扩展JPanel实现ActionListener{
私人最终名单;
私人最终违约清单模型;
私人最终JScrollPane滚动条;
私有最终JButton addButton;
私有最终JButton removeButton;
私人最终JPanel按钮面板;
公共电子邮件列表(){
超级(新边框布局());
addButton=新的JButton(“添加”);
addButton.addActionListener(此);
removeButton=新的JButton(“移除”);
removeButton.addActionListener(此);
buttonPanel=newJPanel(新网格布局(1,2,5,0));
按钮面板。添加(添加按钮);
按钮面板。添加(移除按钮);
model=新的DefaultListModel();
列表=新JList();
list.setModel(model);
滚动=新的JScrollPane(列表);
添加(按钮面板,边框布局。北);
添加(滚动、边框布局、居中);
}
私有布尔有效(最终字符串电子邮件){
//查看此处的电子邮件是否有效
返回true;
}
公开名单电邮(){
最终列表电子邮件=新建LinkedList();
最终枚举元素=model.elements();
while(elements.hasMoreElements())
emails.add(elements.nextElement());
回复邮件;
}
已执行的公共无效行动(最终行动事件e){
最终对象源=e.getSource();
if(source.equals(addButton)){
最终字符串输入=JOptionPane.showInputDialog(null,“输入电子邮件地址”);
if(input==null | | input.trim().isEmpty())
返回;
最终字符串email=input.trim();
如果(!有效(电子邮件)){
showMessageDialog(null,“该电子邮件无效”);
返回;
}
模型.附录(电子邮件);
list.repaint();
}else if(source.equals(removeButton)){
final int i=list.getSelectedIndex();
if(i<0)
返回;
模型移除元素(i);
list.repaint();
}
}
}
只是一个小提示,我是用Java8编写的,所以您可能需要做一些小的更改在空的<代码> 中,只有更改才可以打开;+可以在输入字符串中间跳过“空电子邮件”。电子邮件不能在单个正则表达式中解析。参见:不分裂毛发…<代码> String。SPLIT()/代码>将永远不会返回空值,只返回空字符串<代码>。
。如果(null!=s)
将始终返回true…请参阅