用户输入数据的字符串拆分问题

时间:2013-10-12 16:07:18

标签: java string

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。但是,当用户输入具有“:”的数据时,输入的字符串也会被分割,并且不会打印“:”。如何不拆分包含“:”的输入数据?

5 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

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

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

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

这意味着只有一个冒号,后面只有一个分号!

希望这会有所帮助:)。

答案 2 :(得分: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";
}
         }
       }

答案 3 :(得分:-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.

答案 4 :(得分:-1)

str.split(/*regex*/);

从提供的字符串 中删除提供给split()的 分隔符/正则表达式,并返回一个String数组。这就是为什么你没有在:

返回的字符串数组中看到split()

Link to DOCS