C # строка разделена - PullRequest
       20

C # строка разделена

5 голосов
/ 23 июня 2009

У меня есть строка = "google.com 220 USD 3d 19h".

Я хочу извлечь только часть ".com" .......

Какой самый простой способ манипулировать методом разделения строк для получения этого результата?

Ответы [ 8 ]

8 голосов
/ 23 июня 2009

Полагаю, вы хотите извлечь имя домена или часть строки TLD . Это должно сделать работу:

var str = "google.com 220 USD 3d 19h";
var domain = str.Split(' ')[0];           // google.com
var tld = domain.Substring(domain.IndexOf('.')) // .com
3 голосов
/ 23 июня 2009

Альтернативная идея

string str = "google.com 220 USD 3d 19h";
string match = ".com";
string dotcomportion = str.Substring(str.IndexOf(match), match.Length);
1 голос
/ 23 июня 2009

Я знаю, что вы спрашивали об использовании метода Сплита, но я не уверен, что это лучший маршрут. Разделение строки выделит как минимум 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 );
1 голос
/ 23 июня 2009

Если под извлечением вы подразумеваете удаление, вы можете использовать метод замены

var result = str.Replace (". Com", "");

1 голос
/ 23 июня 2009

Предполагается, что вы хотите домен верхнего уровня:

string str = "google.com 220 USD 3d 19h";
string tld = str.Substring(str.LastIndexOf('.')).Split(' ')[0];
Console.WriteLine(tld);

Выход:

.com

Это учитывает субдомены.

1 голос
/ 23 июня 2009

хорошо, если вы можете предположить, что пространство разделено так же просто, как

строка заполнена

char [] delimiterChars = {''}; // используется, чтобы вы могли указать больше разделителей string [] words = full.Split (delimiterChars, 1); // разбивает только одно слово с пробелом

string result = words [0] // так вы можете получить к нему доступ

0 голосов
/ 23 июня 2009

Я не могу вспомнить причину в мире, что вы хотели бы использовать 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);
    }
}
0 голосов
/ 23 июня 2009

использование 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...