仅从部分用户输入创建字符串

时间:2015-12-12 20:47:38

标签: java string java.util.scanner

我现在正在进行的项目是一个互动项目。它专注于学习语言。我希望用户能够输入数据,并希望控制台根据用户写的内容回复设定的句子。

我被困在"我的名字是"。我整个上午一直在研究scanner.skip函数,但似乎无法找到我需要的信息,如何让它做我想做的事情。我希望用户写"我的名字是[姓名]。"然后我想让控制台将这个答案分成两个单独的字符串,"我的名字是"和" [姓名]"。

我希望能够检查一下"我的名字是"完全匹配"我的名字是",而忽略了" [name]"碰巧是。我希望能够访问" [名称]"但是,稍后,控制台可以使用输入的名称与用户通话。我将如何使用scanner.skip函数执行此操作?这甚至是正确使用的功能吗?

6 个答案:

答案 0 :(得分:1)

我使用子字符串:

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        System.out.printf("line: '%s'%n", line);
        if (line.startsWith("My name is ")) {
            String name = line.substring("My name is ".length());
            System.out.printf("name: '%s'%n", name);
        } else {
            // print error or something
            System.out.println("Error: line has to start with 'My name is ' string.");
        }
    }
}

使用BufferedReader,因为它更快,在这种情况下,它对以后的处理并不重要......

Ideone link

答案 1 :(得分:0)

public class Test {
    public static void main(String[] args) {
        String var = "My Name Is Uly";
        String name = var.replace("My Name Is ", "");
        String firsPart = var.replace(" " + name, "");

        System.out.println(firsPart + " " + name);
    }
}

答案 2 :(得分:0)

如果您愿意提供介绍性文字("我的名字是:")那么你可以得到这样的名字:

cn = System.console();
name = cn.readLine("My name is  ");
System.out.println("Name entered : " + name);

或者您也可以解析字符串:

cn = System.console();
name = cn.readLine();
//n= no of chars in your text :My name is 
name = name.substring(n);

System.out.println("Name entered : " + name );

答案 3 :(得分:0)

您不需要skip。只需阅读整个强大的,可用作String类成员的使用函数,检查它是否以&#34开头;我的名字是",如果是,则从子串开始和结束该前缀(空格为+1),并将其存储在vvariable中以便稍后用作名称。

答案 4 :(得分:0)

public class test {
public static void main(String args[]) {
    Scanner sc;
    do {
        sc = new Scanner(System.in);
        String s = sc.nextLine();
        if (s.equalsIgnoreCase("exit")) {
            System.out.println("Bye");
            break;
        }else if(s.length()>11 && s.substring(0,10).equalsIgnoreCase("my name is")) {
            String name = s.substring(11);
            System.out.println("your name is:"+name);
        } else {
            System.out.println("Sorry incorrect answer ... ");
        }
    }while (true);
}

}

答案 5 :(得分:0)

import java.util.Scanner;

public class Name{
    public static void main(String [] args){

    Scanner input = new Scanner(System.in);

    String str = input.nextLine(); 

    if(str.indexOf("My name is ") >= 0){
       String name = str.substring(str.indexOf("My name is ")+11, str.length());

       System.out.println("Your name is: "+name);
    }
    else
       System.out.println("Error: Could not find name!");

    }
}

测试输入的String是否具有&#34的索引;我的名字是"然后将String分解为子字符串以从输入中提取名称。