虽然我已经问过一个关于类似问题的问题如何让JAVA将一个String线分成两部分,但我没有得到我想要的结果。我的项目涉及逻辑电路(盖茨,电线,信号,触点......)。我在下面的方法中需要做的是从传出的 分离 传入的联系人。如果传入方法,则字符串为A B C -> D
且A B C
为传入,D
为传出联系。我的代码在符号->
之前读取所有内容,但我需要在符号后面读取,忽略符号本身。我必须分别测试incoming contacts
和outgoing 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 contacts
和outgoing contacts
是单独测试的!不要过多关注Wire
和Contact
成员。它们被正确定义。
答案 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确保循环忽略符号)