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