Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不使用拆分或循环的情况下,使用IndexOf和substring拆分字符串_Java_Substring - Fatal编程技术网

Java 在不使用拆分或循环的情况下,使用IndexOf和substring拆分字符串

Java 在不使用拆分或循环的情况下,使用IndexOf和substring拆分字符串,java,substring,Java,Substring,假设我有一个电子邮件地址。比如:凯特。daniels@somecompany.com. 我需要在不使用拆分或循环的情况下将其拆分。我需要将IndexOf与子字符串结合使用,而不是使用循环(这将在我对这一点有了深入的了解之后出现) 但在了解电子邮件地址的情况下查看此电子邮件地址的格式如下:(firstName+“+lastName+“@”+companyName+“.com”) 谢谢你能提供的任何帮助。我可以看到这将是非常有帮助的,我想学习 我已经看了一遍,没有看到对我的问题的回答。如果你先找到@

假设我有一个电子邮件地址。比如:凯特。daniels@somecompany.com.
我需要在不使用拆分或循环的情况下将其拆分。我需要将
IndexOf
与子字符串结合使用,而不是使用循环(这将在我对这一点有了深入的了解之后出现)

但在了解电子邮件地址的情况下查看此电子邮件地址的格式如下:
(firstName+“+lastName+“@”+companyName+“.com”)

谢谢你能提供的任何帮助。我可以看到这将是非常有帮助的,我想学习


我已经看了一遍,没有看到对我的问题的回答。

如果你先找到
@
并在那里分割字符串,你可以找到
中的任何一部分,而不必担心另一部分。

在这种情况下你会怎么做:

String emailAddress = "kate.daniels@somecompany.com";
String firstName = emailAddress.substring(0, emailAddress.indexOf('.'));
String lastName = emailAddress.substring(emailAddress.indexOf('.') + 1, emailAddress.indexOf('@'));
String companyName = emailAddress.substring(emailAddress.indexOf('@') + 1, emailAddress.lastIndexOf('.'));
System.out.println("Firstname: " + firstName + "\nLastname: " + lastName + "\nCompany: " + companyName); //Print them
输出:

Firstname: kate
Lastname: daniels
Company: somecompany
子字符串
需要两个参数来获取范围,即开始索引和结束索引<只有一个参数的code>Substring假定该参数是起始索引,并返回从该位置开始的
字符串的其余部分

请注意,
子字符串
的起始索引是包含的,因此对于
lastName
companyName
我需要放入
+1
以从结果中排除
@


另一个需要注意的重要事项是,对于
电子邮件地址
我必须使用
lastIndexOf(“.”
),因为
字符串中有两个句点
,这将确保最后一个句点位于
子字符串
的正确范围内。通常,
indexOf
返回第一次出现的值。

我认为,最好的解决方案是使用
RegExp
。这比str.substring()要清楚得多。


可能是重复的,非常感谢!这正是我要找的!这真的很酷。我是Java新手,我来自世界的数据库端,能够像这样分解东西真是太棒了。@Martha没问题。我知道你也说过不要使用split来解决这个问题,但是将来使用类似
String[]s=emailAddress.split(“[.@]”)的东西可能会有用
更简单,将在前3个数组位置中输入所需的3个名称!祝你好运谢谢你在这方面的帮助。我还没有开始使用RegExp,但一旦我开始使用,我将回到这里。非常感谢。
Firstname: kate
Lastname: daniels
Company: somecompany
String email = "kate.daniels@somecompany.com";
Pattern pattern = Pattern.compile("(?<firstName>\w+)\.(?<lastName>\w+)@(?<companyName>\w+)\.\w+");
Matcher matcher = pattern.matcher(email);

if (matcher.matches()) {
    String firstName = matcher.group("firstName");      // kate
    String lastName = matcher.group("lastName");        // daniels
    String companyName = matcher.group("companyName");  // somecompany
}
String email = "kate.daniels@somecompany.com";
int dotOne = email.indexOf('.');
int at = email.indexOf('@', dotOne + 1);
int dotTwo = email.indexOf('.', at + 1);

String firstName = email.substring(0, dotOne);        // kate
String lastName = email.substring(dotOne + 1, at);    // daniels
String companyName = email.substring(at + 1, dotTwo); // somecompany