Как я могу получить имя пользователя и домен с адреса электронной почты:
string email = "hello@example.com";
//Should parse into:
string username = "hello";
string domain = "example.com";
Я ищу самый короткий код для этого, не обязательно эффективный.
Сценарий: я хочу проанализировать его в моем представлении ASP.NET MVC, чтобы можно было скрыть его.
Используйте класс MailAddress
MailAddress addr = new MailAddress("hello@site.com");
string username = addr.User;
string domain = addr.Host;
. Этот метод также имеет преимущество анализа таких ситуаций (и других, которые вы, возможно, не ожидаете):
MailAddress addr = new MailAddress("\"Mr. Hello\" <hello@site.com>");
string username = addr.User;
string host = addr.Host;
В обоих случаях выше:
Debug.Assert(username.Equals("hello"));
Debug.Assert(host.Equals("site.com"));
В верхней части вашего файла с остальными вашими директивами использования добавьте:
using System.Net.Mail;
String[] parts = "hello@example.com".Split(new[]{ '@' });
String username = parts[0]; // "hello"
String domain = parts[1]; // "example.com"
respond_to { |format| format.js }
для рендеринга тогда you' d совершенно определенно нужно format: "js"
или you' d получают ActionController::UnknownFormat
ошибка
– Dan Bradbury
26.10.2019, 14:54
string username = email.Split('@')[0];
string domain = email.Split('@')[1];
Split
дважды неэффективен и требует большего количества обслуживания в будущем, когда вещи изменяются.
– detunized
16.05.2020, 23:19
int i = email.IndexOf('@');
if (i >= 0)
{
username = email.Substring(0, i);
domain = email.Substring(i + 1);
}
Используйте это, оно не будет выдавать исключение, когда не найден домен или имя пользователя, вместо этого оно даст нулевое значение для этого,
C #:
string email = "hello@example.com";
string username = email.Split('@').ElementAtOrDefault(0);
string domain = email.Split('@').ElementAtOrDefault(1);
VB:
Dim email as String = "hello@example.com";
Dim username = email.Split("@".ToCharArray()).ElementAtOrDefault(0);
Dim domain = email.Split("@".ToCharArray()).ElementAtOrDefault(1);
:format
там:) – BeMathis 26.10.2019, 14:54