作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
YES leading spaces are valid, problemsetters are evillllll
是我的输入,预期的输出是:
8
YES
leading
spaces
are
valid
problemsetters
are
evillllll
{-truncated-}
下面是我的程序:
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
String array[] = new String[25];
array = s.split("[^a-zA-Z]+");
System.out.println(array.length);
for (String temp: array)
{
System.out.println(temp);
}
scan.close();
}
}
我在控制台上收到的输出是:
9
YES
leading
spaces
are
valid
problemsetters
are
evillllll
这里的错误是数组的第一个元素占用了一个空间,这导致标记的数量等于 9 而不是 8,这一定不是这种情况,上面的代码对于一些字符串来说工作得很好不以空格开头。
任何帮助我忽略第一个空格的想法都会有所帮助。
最佳答案
在拆分之前只需修剪字符串
修剪
Returns a copy of the string, with leading and trailing whitespace omitted.
String[] array = s.trim().split("[^a-zA-Z]+");
问题不在于 trim
正则表达式以某种方式将空字符串拆分为大小为 1
的 String[]
案例 1:
String str=" "; //blank string
System.out.println(str.split("[^a-zA-Z]+").length); //0
案例 2:
String str=""; //empty string
System.out.println(str.split("[^a-zA-Z]+").length); //1
对空字符串或空白字符串的修剪操作始终返回空字符串
案例三:
String str=""; //empty
String str1 = " "; //blank
System.out.println(str.trim().split("[^a-zA-Z]+").length); //1
System.out.println(str1.trim().split("[^a-zA-Z]+").length); //1
为了避免这种情况
trim always input string then check
isEmpty()
will return true if string is empty (false on blank string) and then do the split function
System.out.println(" ".isEmpty()+"----"+"".isEmpty()); //false----true
关于java - 如何从具有句子的字符串中匹配/拆分标记,以便它不考虑开头的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53951967/
我是一名优秀的程序员,十分优秀!