Java 要从电子邮件中删除域,并使值最大为10位(如果大于10),请忽略'';如果介于两者之间。我们怎样才能做到这一点?

Java 要从电子邮件中删除域,并使值最大为10位(如果大于10),请忽略'';如果介于两者之间。我们怎样才能做到这一点?,java,substring,replaceall,Java,Substring,Replaceall,要剥离域并允许最大位数为10,我正在使用此条件: if (sender.indexOf('@') != -1 ) { sender = sender.substring(0, Math.min(sender.indexOf("@"), 10)); } 输入输出 stackoverflow@gmail.com->stackoverf 现在我需要再添加一个条件,如果其间存在“.”,请忽略该“.”。比如说- 堆栈overflow@gmail.com->stackover

要剥离域并允许最大位数为10,我正在使用此条件:

if (sender.indexOf('@') != -1 ) {
     sender = sender.substring(0, Math.min(sender.indexOf("@"), 10));
}
输入输出 stackoverflow@gmail.com->stackoverf

现在我需要再添加一个条件,如果其间存在“.”,请忽略该“.”。比如说- 堆栈overflow@gmail.com->stackoverf

为此,我尝试这样做:

if (sender.indexOf('@') != -1 ) {
  if(sender.contains(".") {
     sender.replaceAll("\\.","");
     sender = sender.substring(0, Math.min(sender.indexOf("@"), 10));
  }
}
无论这种方法是好的还是我们可以实施的更好的方法。
谢谢您的回复。

我想说,如果(sender.contains(“.”)在
sender.replaceAll(“\\”,”)上调用,如果您不先检查,那么
replaceAll
将花费更多的时间(我认为添加一个方法调用会使调用速度变慢,如果有任何问题的话)
您需要将结果重新分配给
发送方才能使其工作。或者您可以一次完成:
发送方=发送方。replaceAll(\\。,“”)。子字符串(0,Math.min(sender.indexOf(“@”),10));
很好的解决方案,不过
发送方=发送方。replace(“。”,“”)
并且您依赖于
@
在场。您可以执行
发送者=发送者。replaceFirst(“@.*$”,“”)。replace(“.”,“”)。replaceFirst(^(.{10})。*$”,“$1”);
非常感谢您,建议的解决方案正在运行:)