Как я могу ввести идентификатор? - PullRequest
3 голосов
/ 29 марта 2012

Я получил ID, которые LSHOE-UCT .Как я могу подстроковать и отделить эти ID, чтобы стать:

gender = "L"
Product = "Shoe"
Category = "UCT"

Вот мой код:

    private void assignProductCategory(string AcStockCategoryID)
    {
        //What should I insert?
        string[] splitParameter = AcStockCategoryID.Split('-');

    }

Мне нужно отделить их, идентифицировать их и вставить в разницутаблица из моей базы данных.И вот тут у меня главная проблема

Ответы [ 7 ]

1 голос
/ 29 марта 2012

Предупреждение : полный перебор

Вы также можете использовать методы расширения LINQ (IEnumerable) для достижения этой цели.Я подумал, что у меня будет небольшой мысленный эксперимент о том, как вы можете использовать IEnumerable для чрезмерного проектирования решения:

int indexOfDash = id.IndexOf("-");

var firstPart = id.TakeWhile(s => s != '-');
var linqGender = firstPart.Take(1).ToArray()[0];  // string is L
var linqProduct = String.Join("", firstPart.Skip(1).Take(indexOfDash-1)); // string is SHOE

var secondPart = id.Skip(indexOfDash+1);
var linqCategory = String.Join("", secondPart);  //string is UCT
1 голос
/ 29 марта 2012

Я бы сделал это задом наперед.

public class LCU
{
    public string Gender {get; set;}
    public string Product {get; set;} 
    public string Category {get; set;}
    public LCU(){}
}

private static LSU LShoe_UctHandler(string id)
{
    var lcu = new LCU();
    var s = id.Split('-');
    if (s.length < 2) throw new ArgumentException("id");
    lcu.Category = s[1];
    lcu.Gender = s[0].Substring(0,1);
    lcu.Product = s[0].Substring(1);
    return lcu;
}

Тогда просто передайте идентификатор LShoe_UctHandler, например, так ...

var lcu = LShoe_UctHandler("LGlobtrotters-TrainingShoes");
Console.WriteLine("gender = {0}", lcu.Gender);       
Console.WriteLine("Product = {0}", lcu.Product );         
Console.WriteLine("Category = {0}", lcu.Category );    

[Ручной ключ - извините за опечатки и ошибки корпуса]

1 голос
/ 29 марта 2012

Чтобы попробовать другой подход, это тоже сработает.

string id = "LSHOE-UCT";
string gender = id.Substring(0,1);

int indexOfDash = id.IndexOf("-");
string product = id.Substring(1, indexOfDash - 1);

string category = id.Substring(indexOfDash + 1);
1 голос
/ 29 марта 2012

РЕДАКТИРОВАТЬ: Обновил мой ответ из-за неправильного формата идентификатора в моем первом сообщении.

Если ваш acStockCategoryID всегда будет в формате LSHOE-UTC, то вы можете сделать что-то вроде следующего:

private void assignProductCategory(string AcStockCategoryID) 
{
    string[] splitParameter = AcStockCategoryID.Split('-');
    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    sb.AppendLine("gender=" + splitParameter[0].Substring(0, 1));
    sb.AppendLine("Product=" + splitParameter[0].Substring(1));
    sb.AppendLine("Category=" + splitParameter[1]);

    // use sb.ToString() wherever you need the results
}
1 голос
/ 29 марта 2012
string[] s = AcStockCategoryID.Split('-');
string gender = s[0].Substring(0, 1);
string Product= s[0].Substring(1, s[0].Length - 1);
string Category = s[1];
1 голос
/ 29 марта 2012

попробуйте это, я просто набрал это случайно извинения, если есть какие-либо опечатки ...

string id = "LSHOE-UCT";    
string[] arr = id.Split('-');
string gender = id.Substring(0,1); // this will give you L
string product = arr[0].Substring(1); // this will give you shoe
string category = arr[1]; // this will give you UCT;
0 голосов
/ 29 марта 2012

Попробуйте это:

        string id = "LSHOE-UCT";
        Console.WriteLine("Gender: {0}",id.Substring(0,1));
        Console.WriteLine("Product: {0}",id.Split('-')[0].Substring(1));
        Console.WriteLine("Product: {0}", id.Split('-')[1]);
...