此问题在此处已有答案:
Remove all occurrences of char from string(13个答案)
五年前就关门了。
我想知道如何在Java中忽略空格。这个程序允许你输入你的名字,中间名和姓氏,然后输出你的首字母。我现在试图让它忽略任何白色。提前感谢!
String fullName;
char firstName;
char secondName;
char surname;
int space1;
int space2;
System.out.println("Please enter your first name, your second name and your surname: ");
fullName = kybd.nextLine();
firstName = fullName.charAt(0);
space1 = fullName.indexOf(" ");
secondName = fullName.charAt(space1 + 1);
space2 = fullName.lastIndexOf(" ");
surname = fullName.charAt(space2 + 1);
System.out.println("Initials: " + firstName + secondName + surname);
2条答案
按热度按时间xtfmy6hx1#
说明
您可以通过从输入文本中删除它们来隐式忽略它们。
因此,将所有匹配项替换为
""
(空文本):之后,
fullName
调用将不再包含 * 空格 *。然而,当你在 * 空格 * 上分裂时,你的逻辑就会出现问题。
溶液
另一种方法是先对文本进行
trim
(删除前导和尾随*空格 *),然后进行拆分,之后可以删除所有其他 * 空格 *:示例
让我们看一个示例输入(
_
代表 * 空白 *):我们将首先得到
trim
fullName
,从而得到:现在,我们确定第一个和最后一个*空格 *,并对它们进行拆分:
最后,我们还要修剪所有内容,得到:
通过
charAt(0)
,我们可以访问首字母缩写:更具活力
另一种更动态的方法是将所有连续的空格合并为单个空格。因此,您需要从左到右遍历文本,一旦看到空格就开始 * 记录 *,如果访问非空格字符就结束 * 记录 *,然后用单个空格替换该部分。
我们的例子是:
在额外的
trim
之后,您可以再次使用常规方法:或者您可以使用
split(" ")
,然后拒绝每空String
:再次使用该示例,
Stream
首先由以下内容组成滤波后
减号
就像你说的你也要
输出
RJS-A
,您可以在 * 空白 * 上拆分后,在-
上进行拆分。其输出
RJS-A
。这种方法有点复杂,因为我们需要维护子流的信息,我们不能只把
flatMap
所有的东西放在一起,否则我们不知道在哪里再添加-
。所以在中间部分,我们实际上是在Stream<Stream<String>>
对象上操作。xzabzqsa2#
我想你在这里要找的是String中的split方法
您可以这样使用它:
另一个你可能需要的是trim方法,它删除字符串前后的空格。