-1
public static void main(String[] args){
 Scanner scan = new Scanner(System.in);
 String read = scan.readLine();
 String str = read + ":" + "world";
 String[] sets = str.split(":");
 System.out.println(sets[0] + sets[1]);
}

在这里,如果我们输入hello,我会得到hello world。但是,当用户输入带有“:”的数据时,输入的字符串也会被拆分,不会打印“:”。如何不拆分包含“:”的输入数据?

4

5 回答 5

2

不要拆分用户可以自己键入的相同字符。

即使它可能太多了,您也可以确保使用uuid作为分隔符不会再次发生这种情况。

Scanner scan = new Scanner(System.in);
String read = scan.readLine();
String separator = UUID.randomUUID().toString();
String str = read + separator + "world";
String[] sets = str.split(separator);
System.out.println(sets[0] + sets[1]);
于 2013-10-12T16:11:51.837 回答
0

显而易见且简单的解决方案:如果可能,请更改分隔符。您还可以使用竖线 (|)、#、$ 等等!只需找到一个您确定它不会出现在输入中的内容!如果您使用正则表达式,您甚至可以尝试使用分隔符的组合!

说如果你的分隔符是 :; (冒号后跟分号)您可以使用正则表达式进行拆分:

str.split("[:]{1}[;]{1}");

这意味着正好一个冒号紧跟一个分号!

希望这可以帮助 :)。

于 2013-10-12T16:32:53.700 回答
0

试试下面这样:

    char[] delims = {':'};
        for (char delim : delims) {
        for (int i = 0; i < read.length(); i++) {
            if (read.charAt(i) == delim) {
                //Now write your code here
    String str = read + "world";
            }
else
{
String str = read + ":" + "world";
}
         }
       }
于 2013-10-12T16:54:07.737 回答
-1

从文档中:

public String[] split(String regex)

Splits this string around matches of the given regular expression.

This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.
于 2013-10-12T16:11:40.957 回答
-1
str.split(/*regex*/);

从提供的字符串中删除提供给 split() 的分隔符/正则表达式并返回一个字符串数组。这就是为什么您:在返回的字符串数组中看不到的原因split()

链接到文档

于 2013-10-12T16:13:05.060 回答