繁体   English   中英

将包含特殊字符的字符串拆分为单个字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM