У меня есть строка = "google.com 220 USD 3d 19h".C# string split
Я хочу, чтобы извлечь только «.com» часть .......
Что самый простой способ манипулировать метод раскола строки, чтобы получить этот результат?
У меня есть строка = "google.com 220 USD 3d 19h".C# string split
Я хочу, чтобы извлечь только «.com» часть .......
Что самый простой способ манипулировать метод раскола строки, чтобы получить этот результат?
Я предполагаю, что вы либо хотите извлечь доменное имя, либо часть строки TLD. Это должно сделать работу:
var str = "google.com 220 USD 3d 19h";
var domain = str.Split(' ')[0]; // google.com
var tld = domain.Substring(domain.IndexOf('.')) // .com
Не знаете, почему это проголосовали, код tld неверен. Я предполагаю, что вы имели в виду это сказать: var tld = domain.Substring (domain.IndexOf ('.')); // .com – RedFilter
Я предполагаю, что var tld = domain.Substring (domain.IndexOf ('.')) имел в виду (отредактировал его, надеюсь, что вы не против Нолдорина)? –
@OrbMan: Ты ужасно суровый судья! Это была просто опечатка, которую вы могли бы исправить. Я предполагаю, что голосом пришло от вас. : P – Noldorin
хорошо, если можно предположить, что пространство Seperator его так же легко, как
строки полного
символьных [] delimiterChars = { ''}; // используется так, что вы можете указать больше delims string [] words = full.Split (delimiterChars, 1); // разбивает только одно слово с пространством
строка результат = слова [0] // это, как вы можете получить доступ к нему
Если вы хотите получить домен верхнего уровня:
string str = "google.com 220 USD 3d 19h";
string tld = str.Substring(str.LastIndexOf('.')).Split(' ')[0];
Console.WriteLine(tld);
Выход:
.com
Это учитывает поддомены.
Альтернативные идеи
string str = "google.com 220 USD 3d 19h";
string match = ".com";
string dotcomportion = str.Substring(str.IndexOf(match), match.Length);
Это работает только в том случае, если TLD является .com. Учитывая, что дело в том, чтобы действительно узнать, что такое tld, это кажется странным. – Brian
@Brian: хотя я согласен с тем, что код не является правильным решением, он выбирает любой трехбуквенный TLD (например .net или .org). Однако он пропустит любой другой TLD (например, .de или .info). –
Если вытяжкой вы имеете в виду удалить, вы можете использовать метод Replace
уаг результат = str.replace ("" "ком.");
с помощью Regex будет лучшим вариантом, но если вы хотите использовать Split затем
var str = "google.com 220 USD 3d 19h";
var str1 = str.Split(' ')[0];
var str2 = str1.Split('.')[0];
Console.WriteLine(str1.Replace(str2, string.Empty));
Я знаю, что вы спросили об использовании Split метод, но я не уверен, что это лучший путь. Разделение строки будет выделять не менее 5 новых строк, которые будут немедленно проигнорированы, а затем придется ждать, пока не будет выпущен GC. Вам лучше просто использовать индексирование в строку и вытащить именно то, что вам нужно.
string str = "google.com 220 USD 3d 19h";
int ix = str.IndexOf(' ');
int ix2 = str.IndexOf('.', 0, ix);
string tld = str.Substring(ix2, ix - ix2);
string domain = str.Substring(0, ix);
Я не могу думать о причине в мире, который вы хотели бы использовать String.Split
для этой цели. Эту проблему лучше всего решить с помощью регулярного выражения.
Вот небольшая программа, которая показывает, как это сделать:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
String foo = "google.com 220 USD 3d 19h";
Regex regex = new Regex(@"(.com)", RegexOptions.IgnoreCase);
Match match = regex.Match(foo);
if (match.Success)
Console.WriteLine(match.Groups[1].Value);
}
}
Downvoters - есть причина, почему это было приостановлено (кроме того, что я не использовал String.Split)? –
Я не спускал вниз, но ваш тон может иметь к этому какое-то отношение. Просто потому, что вы не можете думать о причине, это не значит, что ее нет. –
Хм, хороший момент. Я действительно выгляжу как придурок :) Спасибо, что указали это. –
строки извлеченной = ".com" ;. Это самый простой способ, и вам даже не нужно использовать string.split! :-) –
Недостаточно подробностей - если вы приводите дополнительные примеры строк и что вам нужно извлечь, можно разработать хорошее общее решение. – Oded
Рассмотрите возможность использования регулярного выражения. –