如何将单个字符串分成两部分?

时间:2016-01-20 21:05:29

标签: java arrays string string-split

我有一个文本文档,其中包含许多行,每行包含用户名,逗号和密码。例如,

Joe, pass1
Sally, badpassword
Ahmed, goodpassword

等等。

我可以毫不费力地将这些行读到我的程序中。之后我想将它们分成ArrayListString.split()说它应该将它们分成一个数组。我需要ArrayList,无论如何,当我调用split() String时, while (true) { if ((str = br1.readLine()) != null) break; out.println(str); str.split(","); userstr.add(str); } 保持不变。所以我不知道如何继续。

这是我认为我遇到问题的地方:

public BuggerGUI() {
    super("password");
    setLayout(new GridLayout(3, 4));
    userL = new JLabel("username");
    add(userL);
    userT = new JTextField(10);
    add(userT);
    passL = new JLabel("password: ");
    add(passL);
    passT = new JPasswordField(10);
    add(passT);
    blankL = new JLabel();
    add(blankL);
    loggin =  new JButton("login");
    add(loggin);
    handler Handler = new handler();
    userT.addActionListener(Handler);
    passT.addActionListener(Handler);
    loggin.addActionListener(Handler);
}

private class handler implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent event) {
        String user = userT.getText();
        String pass = passT.getText();
        if (event.getSource() == loggin) {
            out.println("username: " + user);
            out.println("password: " + pass);
            try {
                ArrayList userstr = new ArrayList();
                FileReader fr1 = new FileReader("C:\\Users\\Owner\\Desktop\\passlist.txt");
                BufferedReader br1 = new BufferedReader(fr1);
                String str;
                while (true) {
                    if ((str = br1.readLine()) != null)
                        break;
                    out.println(str);
                    str.split(",");
                    userstr.add(str);
                }     
                for (int i = 0; i < userstr.size();)
                    if (userT.equals(userstr.get(i)))
                        out.print("cool");   
            } catch(IOException e) {
                System.out.println(ERROR);
            }
        }
    }
}

这是全班:

exec

4 个答案:

答案 0 :(得分:1)

str.split(",")返回一个字符串数组,表示由,分隔的原始字符串。原始字符串不受此方法的影响。所以在你的代码中,这一行没有做任何事情,因为你忽略了返回值。

你可能想要的是:

String[] parts = str.split(",");
// do something with the parts

修改

如果要将字符串的各个部分存储在数组列表中:

String[] parts = str.split(",");
List listOfParts = Arrays.asList(parts);

第二次编辑

如果您尝试仅使用用户名列表填充数组列表:

while((str = br1.readLine()) != null){
    out.println(str);
    String[] parts = str.split(",");
    if(parts.length > 0) {
        userstr.add(parts[0]);
    }
}

然后,您可以简化这段代码:

for(int i = 0; i < userstr.size();){
    if(userT.equals(userstr.get(i))){
        out.print("cool");
    }
}

...将其替换为:

if(userstr.contains(user)) {
    out.print("cool");
}

请注意,我与user进行比较,后者是一个字符串,而不是userT,它似乎是一个控件。

答案 1 :(得分:1)

如果您使用&#34;,&#34;作为split()的参数,您的结果可能不是您所期望的。如果您的字符串是&#34; Sally,xyz&#34;,它将被分成&#34; Sally&#34;和&#34; XYZ&#34 ;. 注意第二个字符串中的空格。

你可能想要的是使用&#34; \ s *,\ s *&#34;转换为&#34;任意数量的空格字符,后跟逗号,后跟任意数量的空白字符&#34;。

答案 2 :(得分:0)

我认为你正在寻找这个:

String string =“这是要拆分的字符串。”; ArrayList arrayList = new ArrayList(Arrays.asList(string.split(“”)));

这会将拆分的字符串添加到arrayList。

答案 3 :(得分:-1)

你曾经有过

Array ( [2] => ADD.mp4  [6] => Phen.mp4 [7] => REM.mp4) 

str.split(","); split()方法。它并没有改变void

您可以将str替换为:str.split(",")来修复它,或者您可以将它全部放在一行上,如:

str = str.split(",")