为什么在java代码中String.length中不计算空间?
一个简单的问题把我弄糊涂了。当我在字符串中使用空格时,String.length方法只计算空格之前的字符串长度,为什么??例如,它返回ab cdef的长度2,而它似乎是7!我想知道字符串的长度和空格, 以下是我的简单代码:为什么在java代码中String.length中不计算空间?,java,string,replaceall,Java,String,Replaceall,一个简单的问题把我弄糊涂了。当我在字符串中使用空格时,String.length方法只计算空格之前的字符串长度,为什么??例如,它返回ab cdef的长度2,而它似乎是7!我想知道字符串的长度和空格, 以下是我的简单代码: public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.println("Please Enter Operation: ");
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("Please Enter Operation: ");
String value = scanner.next();
System.out.println(valuee.length());
}// psv main
另外,如果我想删除字符串中的空格
String valuee = value.replaceAll("\\s","");
不行!
有人能帮我吗?下一步忽略尾随空格,更改为下一行
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("Please Enter Operation: ");
String value = scanner.nextLine();
System.out.println(valuee.length());
}// psv main
要删除空间,请尝试
String valuee = value.replaceAll(" ","");
您面临的问题不是String类的length方法,而是您用来读取输入的方法,它在空格之前扫描输入。如果您手动添加空间,它将正常工作。详情如下:
Scanner scanner = new Scanner(System.in);
System.out.println("Please Enter Operation: ");
String value = scanner.next();
value = value + " ";
System.out.println(value.length());
要删除可以使用的空间,请执行以下操作:
value.replace(" ", "");
请使用下一行而不是下一行。 这里是代码剪报
Scanner scanner = new Scanner(System.in);
String scannedValue = scanner.nextLine();
System.out.println(scannedValue.length());
扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白。可以使用useDelimiter方法更改分隔符 您甚至可以使用nextLine,默认情况下它有一个新行作为分隔符 查找并返回此扫描程序中的下一个完整令牌 下一种方法考虑了标识令牌的空白 参见下面的示例
import java.util.Scanner;
public class Post4 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("Please Enter Operation: ");
String value = scanner.next();
System.out.println(value.length());
value = scanner.next();
System.out.println(value.length());
}// psv main
}
对于以下输入
asd asdf
输出是
三,
四,
使用Scanner.nextLine;获取输入并使用
String.replaceAll,以替换空白
看看Scanner类构造函数,它使用的是空格
您可以更改分隔符
scanner.useDelimiter("\n");
您是否在更换前或更换后打印长度?无论在何处使用更换!您应该使用调试器来找出代码中到底发生了什么,以验证您的假设。
public Scanner(InputStream source) {
this(new InputStreamReader(source), WHITESPACE_PATTERN);
}
scanner.useDelimiter("\n");