如何将扫描仪对象转换为字符串。

3
我需要帮助完成以下操作:
  1. 使用Scanner类接收输入(我已经会了)
  2. 从scanner中获取输入并将其转换为字符串
  3. 使用replaceAll从用户输入中删除0-9的数字。
以下是我目前的代码,但它只返回用户输入,而没有删除数字:
public static void main(String[] args) {

    Scanner firstname = new Scanner(System.in);
    System.out.println("Please enter your first name:");
    String firstname1 = firstname.next();
    firstname1.replaceAll("[^0-9]","");
    System.out.println(firstname1);

更新的代码。感谢Hovercraft。现在我正在研究如何检索所有字母字符,因为使用下面的代码,我只能得到用户输入的数字值之前的字母:

import java.util.Scanner;    

public class Assignment2_A {

    public static void main(String[] args) {

        Scanner firstname = new Scanner(System.in);
        System.out.println("Please enter your first name:");
        String firstname1 = firstname.next();
        firstname1 = firstname1.replaceAll("[^A-Z]","");
        System.out.println(firstname1);

你在这里有一个问题:firstname1.replaceAll("[^0-9]","");,因为它不会改变firstname1字符串,而是返回一个已更改的字符串。你必须将返回的字符串重新赋值给firstname1变量:firstname1 = firstname1.replaceAll("[^0-9]",""); 这样做的原因是因为字符串是不可变的。一旦创建了一个字符串对象,就无法更改它,但可以更改字符串变量引用的字符串对象,这是微妙但重要的区别。 - Hovercraft Full Of Eels
谢谢Hovercraft Full of Eels。多亏了你,我已经接近成功了。我已经更新了我的代码如下,现在只返回数字。我该如何更新它以仅检索字母字符(而不是0-9)? - user2558595
3个回答

4
String input = yourScannerObject.nextLine ();

“yourScannerObject”是您为扫描器指定的名称。


1
您使用了什么方法进行扫描?是 {scanner object name}.next() 吗?
如果是这样,您已经得到了一个字符串,您所要做的就是创建一些字符串并将输入保存到其中,例如:
  • String str="";
  • str = {scanner object name}.next();
在使用Java中的任何内容之前,我建议您阅读API文档:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#next()


0
使用 Scanner 类接收输入(我明白了) 从 Scanner 中获取输入并将其转换为字符串 使用 replaceAll 从用户输入中删除数字 0-9。
以下是示例:
String in;
Scanner scan = new Scanner("4r1e235153a6d 6321414t435hi4s 4524str43i5n5g");
System.out.println(in = (scan.nextLine().replaceAll("[0-9]", ""))); // use .next() for space or tab

输出:

read this string

你代码中的问题在于正则表达式“[^A-Z]”被设置为删除所有非字母大写字符。这意味着你也会删除所有小写字母。你可以使用“[^a-zA-Z]”,但这样也会删除特殊字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接