[英]Splitting a String containing special characters in to individual characters
我想将用户输入解析为单个字符。 例如,输入
Hello! My name is x
应该分为:
{"H", "e", "l", "l", "o", "!"," ", "M","y"....}
请注意,我想保留空格。
我似乎无法弄清楚如何使用String.split来做到这一点。 我试过寻找可以做到这一点的正则表达式,但所有这些都在 ! 处切断。
这是当前代码,我正在尝试拆分来自扫描仪的字符串。
public static List<String> getUserInput() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a line of text: ");
return Arrays.asList(scanner.next().split(""));
}
任何帮助表示赞赏!
尝试这个:
String[] cs = s.split("");
使用String.toCharArray
这将为您提供字符串的char[]
,并保留空格。
我很好奇你为什么要这样做。 字符串基本上可以用charAt()
读取为数组。 您可以使用StringReader
将字符串转换为流。 您可以使用chars()
或codePoints()
将字符串转换为IntStream
。 或者,您可以使用toCharArray()
获取其内部字符数组的副本。
关于您在关于toCharArray()
或.split()
切断的评论中所说的内容,他们没有。 您一定在某个地方有错误,请向我们展示您的代码。
public static void main( String[] args ) {
String test = "Hello! My name is x";
char[] chars = test.toCharArray();
System.out.println( Arrays.toString( chars ) );
}
这会为我打印整个字符串并且不会切断。
run:
[H, e, l, l, o, !, , M, y, , n, a, m, e, , i, s, , x]
BUILD SUCCESSFUL (total time: 0 seconds)
更新:关于您的更新, next()
查找标记,默认情况下,这些标记在空白处被截断。 你想要nextLine()
。
return Arrays.asList(scanner.next().split(""));
改成:
return Arrays.asList(scanner.nextLine().split(""));
试试单词边界匹配器:
assertEquals(3, "a b".split("\\b").length)
你可以这样做:
String foo = "Hello! My name is x";
for(char c: foo.toCharArray()) {
//do whatever you want here
//for example
System.out.print(c);
}
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.