【问题标题】:How do I display the first 2 names in an email in android?如何在 android 的电子邮件中显示前 2 个名称?
【发布时间】:2015-11-29 14:24:55
【问题描述】:

我计划在我的代码中的电子邮件中显示前 2 个名字,这样如果电子邮件类似于 justin.bauer@gmail.com,我希望它将名字 justin 识别为 Justin,将第二个名字识别为 Bauer。我知道通过正则表达式是可能的,但不确定如何以最简单的方式进行。到目前为止,这是我所做的:

String filename = listentry.getName();     // full file name
                int iend = filename.indexOf(".");
                int iend2 = filename.indexOf("."+iend);
                if (iend != -1 && iend2!= -1) {
                    String subString = filename.substring(0, iend);
                    String subString2 = filename.substring(0, iend2);
                    holder.text.setText(subString +" " + subString2);
                }

但是对于第二个名称,这并不像预期的那样工作。任何人都可以解决这个问题或提供更清晰的代码吗?

谢谢!

【问题讨论】:

  • ("."+iend) 你认为这有什么作用?

标签: android android-layout listview android-listview android-listfragment


【解决方案1】:
String filename = listentry.getName();     // full file name
String[] parts = filename.split("@");
String domain = parts[1].split("\\.")[0];
String[] names = parts[0].split("\\.");
String combinedNames = "";
for (String name : names) {
    combinedNames += firstUpper(name) + " ";
}
holder.text.setText(combinedNames + "- " + firstUpper(domain));

// "abc ABC" -> "Abc Abc"
public String firstUpper(String text) {
    return (text.substring(0,1).toUpperCase() + text.substring(1).toLowerCase());
}

【讨论】:

  • 这对我来说崩溃并出现错误:FATAL EXCEPTION: main Process: com.justice.abc, PID: 21072 java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 在 com.justice.abc.visuals.ListFragment$MySimpleArrayAdapter.getView(ListFragment.java:145)
  • 你能给我来自listentry.getName()的返回值的所有可能格式示例吗?我以为它总是像first.second@domain.com
  • 有时是 abc@domain.com 有时是 abc.def.ghi.jkl@domain.com ,我也如何显示域名?类似“abc def ghi - 域”
  • 谢谢它的工作,想知道你能不能最后一次修改它以显示格式 first.second.third(@abc.com@domain.com 之前的任何@)@abc.com@domain.com 这样“ First Second Third - Abc" 没有显示 com 和显示域 abc 是第一个域及其我要显示的公司名称。并希望将第一个字母全部显示为大写
  • 再次更新了我的答案,如果是,请将其标记为已回答:)
【解决方案2】:

你可以使用分割命令:

String filename = listentry.getName();     // full file name
String[] nameParts = string.split(".");
holder.text.setText(nameParts[0] +" " + nameParts[1]);

【讨论】:

  • 这对我来说崩溃了,这对我来说崩溃了错误:致命异常:主进程:com.justice.abc,PID:21072 java.lang.ArrayIndexOutOfBoundsException:length = 1; index=1 at com.justice.abc.visuals.ListFragment$MySimpleArrayAdapter.getView(ListFragment.j‌​ava:145)
  • 如果它的 3 个字母像 a.b.c@something.com,它也会显示布尔值 false
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 2015-02-22
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2016-08-14
相关资源
最近更新 更多