如何指定要包含在子字符串中的字母数(而不是空格)?

Vis*_*ram 4 java string

我正在尝试使用索引值打印子字符串.我需要在计数时排除空格,但它应该打印输出和空格.我想从主字符串中显示n个字母.空格将保持原样,但从下限到上限索引的字母数量应为n.我的代码是

public class Test {
    public static void main(String args[])
    {
        String Str=new String("Welcome to the class");
        System.out.println("\nReturn value is:");
        System.out.println(Str.substring(2,9));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出: lcome t

在上面提到的代码中,它计算"欢迎"和"到"之间的空格.我不需要计算它们之间的空间.我的预期产量是收益

Som*_*Guy 6

你可以使用简单的数学.只需对其进行子串,删除所有空格并将原始长度与String无空格进行比较.然后将大小差异添加到子字符串的结束索引中.

public static void main(String args[]) {
    String Str = "Welcome to the class";
    System.out.println("\nReturn value is:");
    String sub = Str.substring(2, 9);
    String wsRemoved = sub.replaceAll(" ", "");
    String wsBegginingRemoved = sub.replaceAll("^ *", "");
    String outputSub = Str.substring(2+(sub.length()-wsBegginingRemoved.length()), 9+(sub.length()-wsRemoved.length()+(sub.length() - wsBegginingRemoved.length())));
    System.out.println(outputSub);
}
Run Code Online (Sandbox Code Playgroud)

编辑:不再忽略前导空格

O/P

lcome to
Run Code Online (Sandbox Code Playgroud)

O/P "My name is Earl"

name is E    
Run Code Online (Sandbox Code Playgroud)