【问题标题】:I am trying to convert a string of words into an array with the spaces included我正在尝试将一串单词转换为包含空格的数组
【发布时间】:2014-07-11 18:40:42
【问题描述】:

我希望用户输入一个演员的名字:汤姆·汉克斯

我正在尝试将字符串“tom hanks”转换为数组。

但是我想在“m”和“t”之间保留空格。所以数组会读取:

{“t”、“o”、“m”、“”、“h”、“a”、“n”、“k”、“s”}

然后将用户输入与程序中的答案进行比较。一个字一个字。

考虑到用户会输入一个空格,我将把字符串名称转换成数组,然后将它们与空格等进行比较。

这是我目前的代码

    String x;

    System.out.println("Please input a name");
    x = input.next(); 

    //the user enters in "tom hanks"

    String[] a = x.split("\\b");

这只会创建数组 {"t", "o", "m"}

任何帮助将不胜感激,在此先感谢您。

【问题讨论】:

  • Java 我猜? (貌似是这样,但是有几种语言可以调用java库)

标签: java arrays string split spaces


【解决方案1】:

您应该将字符串转换为字符数组

char[] charArray = str.toCharArray();

您可以像访问普通数组一样访问它。

【讨论】:

  • 因为用户正在输入字符串,所以似乎只读取了第一个单词。
【解决方案2】:

使用空字符串作为正则表达式来拆分字符串:

String str = "alan smith";
String[] letters = str.split("");

例如:

String str = "alan smith";
String[] letters = str.split("");
for (int i = 0; i < letters.length; i++)
    System.out.print(letters[i] + " ");

输出:

a l a n   s m i t h 

编辑

好像这个方法一开始就生成了一个空token。

【讨论】:

  • 对我来说这只是打印出:a l a n
  • 看来问题出在您阅读文本的方式上:将x = input.next(); 更改为x = input.readLine();
  • 对不起,我对 java 有点陌生。我是否必须更改其他任何内容,因为 readLine 说它未定义。
  • 你是对的,输入只读取名称的第一部分。所以它甚至从未将“hanks”转换为数组。使用 readLine,它使用 char 数组读取空间!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2020-07-30
  • 2021-02-23
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多