我有一个关于 indexOf()
的问题。我正在尝试编写一个EmailExtractor
(是的,这是一项作业,但我不是在寻找代码)它从用户输入的句子中提取整个电子邮件地址。
例如 -
用户输入:给我们发邮件 [email protected]与您的查询。
然后程序将显示[email protected] 从上面String
。我明白了indexOf()
和substring()
是必要的。
我现在的想法是使用indexOf()
找到“@”,然后搜索用户输入的电子邮件地址之前的空格(第 n 个)。
我的代码如下:
System.out.println("This is an Email Address Extractor.\n");
System.out.print("Enter a line of text with email address: ");
String emailInput = scn.nextLine();
int spaceAt = emailInput.indexOf(" ");
for (int i = 1; i <= emailInput.indexOf("@"); i++){
if (spaceAt < emailInput.indexOf("@")) {
spaceAt = emailInput.indexOf(" ", spaceAt + 1);
}
}
我理解并意识到我的代码中的问题。
1) "Mail us at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b6d7d4d5f6d2d3d098d1dedf98dcdd" rel="noreferrer noopener nofollow">[email protected]</a> with your queries".indexOf(" ")
是 4,我想得到 10。但是,我输入的 IF 条件将导致它跳到下一个 indexOf() 实例,即 25。(因为 10 < 14)。
我该如何避免这种情况发生?
再一次,我并不是在寻找纯粹的答案,而是试图找到解决方案。提前致谢!
最佳答案
如何找到@前后的空格
int at = emailInput.indexOf('@');
int start = emailInput.lastIndexOf(' ', at) + 1;
int end = emailInput.indexOf(' ', at);
if (end == -1) end = emailInput.length();
String email = emailInput.substring(start, end);
关于java - 使用 IndexOf() 查找字符串中某个字符的第 n 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921085/