gpt4 book ai didi

java - 如何从具有句子的字符串中匹配/拆分标记,以便它不考虑开头的空格

转载 作者:行者123 更新时间:2023-11-29 08:25:01 25 4
gpt4 key购买 nike

       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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com