12

I have a method which will return two strings in an array, split(str, ":", 2) to be precise.

Is there a quicker way in java to assign the two values in the array to string variables than

String[] strings = str.split(":", 2);
String string1 = strings[0];
String string2 = strings[1];

For example is there a syntax like

String<string1, string2> = str.split(":", 2);

Thanks in advance.

4

3 回答 3

10

不,Java 中没有这样的语法。

但是,其他一些语言也有这样的语法。示例包括 Python 的元组解包和许多函数式语言中的模式匹配。例如,在 Python 中,您可以编写

 string1, string2 = text.split(':', 2)
 # Use string1 and string2

或者在 F# 中你可以写

 match text.Split([| ':' |], 2) with
 | [string1, string2] -> (* Some code that uses string1 and string2 *)
 | _ -> (* Throw an exception or otherwise handle the case of text having no colon *)
于 2012-09-08T06:09:16.627 回答
1

您可以创建一个持有者类:

public class Holder<L, R> {
    private L left;
    private R right;

   // create a constructor with left and right
}

然后你可以这样做:

Holder<String, String> holder = new Holder(strings[0], strings[1]);
于 2012-09-08T06:07:14.503 回答
-5

我可以说“使用循环”。可能是 for 循环,可能是 while,这取决于你。如果这样做,则不必担心数组大小。一旦您将数组大小作为“终止条件”传递,它将顺利工作。

更新:

我将使用如下代码。反正我没有把它弄脏,但我总是用这种风格。

String[] 字符串 = str.split(":", 2);

List keepStrings = new ArrayList();

for(int i=0;i<strings.length;i++)
{
    String string = strings[i];

    keepStrings.add(string);


}
于 2012-09-08T05:57:41.543 回答