读取某个符号前后的字符串单词

时间:2015-04-12 06:38:57

标签: java

虽然我已经问过一个关于类似问题的问题如何让JAVA将一个String线分成两部分,但我没有得到我想要的结果。我的项目涉及逻辑电路(盖茨,电线,信号,触点......)。我在下面的方法中需要做的是从传出的 分离 传入的联系人。如果传入方法,则字符串为A B C -> DA B C为传入,D为传出联系。我的代码在符号->之前读取所有内容,但我需要在符号后面读取,忽略符号本身。我必须分别测试incoming contactsoutgoing contacts,测试也在下面。 smb可以帮忙吗?

 private List<Contact> inputs;
    private List<Wire> innerWires;

    public void parseContactsLine(String line)
            {

        String[] words = line.split(" ");


                for(int i = 0; i < words.length; i++)
                {
                    if(!(words[i].equals("->")))
                    {
                        Wire wire1 = new Wire(words[i]);
                        ///Wire wire2 = new Wire(words[i]);
                        innerWires.add(wire1);
                        //innerWires.add(wire2);
                        Contact contact = new Contact(wire1, wire1, true);
                        inputs.add(contact);
                        outputs.add(contact);
                    }
                    else 
                        break;
                }
        }

此代码的输出为[A B C]

我的测试用例是:

 List<Contact> ins = Arrays.asList(new Contact[]{
      new Contact(new Wire("A"), new Wire("A"), true),
        new Contact(new Wire("B"), new Wire("B"), true),
        new Contact(new Wire("C"), new Wire("C"), true)}
    );
    List<Contact> outs = Arrays.asList(new Contact[]{
      new Contact(new Wire("D"), new Wire("D"), false)}
    );

请注意incoming contactsoutgoing contacts是单独测试的!不要过多关注WireContact成员。它们被正确定义。

2 个答案:

答案 0 :(得分:1)

试试这个

String[] array = "A B C -> D".split("->");
    //splits your string into two strings, and stores them in an array
    //array[0] = "A B C " -- all elements before ->
    //array[1] = " D" -- all elements after ->
    String[] input = array[0].trim().split(" "); 
    // trim is used to remove trailing/leading white spaces
     String[] output = array[1].trim().split(" ");

答案 1 :(得分:0)

你可以循环单词数组,直到找到 - &gt;符号。当您找到符号时,您实际上找到了索引 - &gt;在数组中。那么,您可以使用类似于for(int x = symbolIndex + 1; x < words.lenght; x++)

的内容再次循环单词数组

(symbolIndex + 1确保循环忽略符号)