【发布时间】:2011-04-04 16:34:53
【问题描述】:
我们可以在 findInLine() 方法中使用哪些字符串模式。例如,如果输入是电子邮件地址,例如 vinny.kinny@gmail.com,我如何使用 java 中的 findInLine() 方法从输入中仅找到“vinny.kinny”。
【问题讨论】:
我们可以在 findInLine() 方法中使用哪些字符串模式。例如,如果输入是电子邮件地址,例如 vinny.kinny@gmail.com,我如何使用 java 中的 findInLine() 方法从输入中仅找到“vinny.kinny”。
【问题讨论】:
【讨论】:
当你写一个方法时,最好指定在哪个类(哪个包/库等)中可以找到它。
我不知道整个 Java API,远非如此,但我从未听说过 findInLine() 方法。
除非您打算自己编写此方法,否则这不是很清楚...
如果您打算编写此方法,您可以使用String 类中的任何方法。例如,indexOf() 可以让您找到“@”的索引,然后您可以使用 substring() 方法提取它之前的部分。
或者,如果您需要很大的灵活性,您可以使用正则表达式。
【讨论】:
没有直接回答您的问题,但我会为此使用 StringTokenizer:
new StringTokenizer(emailString, "@");
【讨论】:
String.split() 是推荐的方法拆分字符串
假设你说的是Scanner类的findInLine()方法,
这些是 java.util.regex.Pattern 的 Javadoc 中描述的正则表达式模式。
【讨论】:
Sanner#findInLine(String regExp) 采用与String#split(String regExp) 相同的模式。它是一个正则表达式(Java 风格),可以在 Pattern 类的 javaDoc 中找到一个很好的文档。
【讨论】:
这就是我所做的:
import java.util.*;
import java.util.regex.Pattern;
public class GetUserName {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String userName;
System.out.println("Enter your email address: ");
userName = scn.findInLine(Pattern.compile("[a-z]+"));
System.out.println(userName);
}
}
控制台窗口的输出:
Enter your email address:
thyaga@gmail.com
thyaga
---------->
这是我学到的:Pattern 类、FindInLine 方法以及如何使用模式参数、正则表达式构造。
谢谢大家,再次感谢您提供的帮助!
PS:邮件的正则表达式不完整,需要细化。
【讨论】: