Подстрока в массиве c # (Unity) - PullRequest
0 голосов
/ 11 мая 2018

У меня есть эти данные

Данные: P, B, B P, P, T, P, P B

И я получаю это через это

for (int i = 0; i < gametable_history_list.Count; i++)
{
     newString[0] += gametable_history_list[i].r;
     newString[0] += ",";
}
string[] newChars = newString[0].Split(',');
foreach (string previousValue in newChars)
{}

этот код newString[0].Split(',').ToString().Substring(0,1); не работает. Я уверен, что делаю это неправильно. Может кто-то указать на это.

Мой ожидаемый результат должен быть

Данные ранее: P, B, B P, P, T, P, P B

Данные после подстроки: P, B, B, P, T, P, P

Ответы [ 4 ]

0 голосов
/ 11 мая 2018

Краткий и точный ответ (используйте Linq):

 var data = "P, B, B P, P, T, P, P B";
 var output = String.Join(",",data.Split(',').Select(x => x.Trim().Substring(0,1)));   

Output : P,B,B,P,T,P,P

Нет необходимости использовать физическую петлю.

0 голосов
/ 11 мая 2018

Попробуйте использовать этот код:

var str = "P ,B ,B P,P ,T ,P ,P B";

var result = String.Join(",", str.Split(new string[] {","}, StringSplitOptions.None).Select(r => r.Substring(0, r.IndexOf(' ') + 1)));                

Результат:

P ,B ,B ,P ,T ,P ,P 

Без Linq:

var str = "P ,B ,B P,P ,T ,P ,P B";

var tempResult = str.Split(new string[] {","}, StringSplitOptions.None);

for (var a = 0; a < tempResult.Length; a++)
{
    tempResult[a] = tempResult[a].Substring(0, tempResult[a].IndexOf(' ') + 1);
}

var result = String.Join(",", tempResult);

Результат:

P ,B ,B ,P ,T ,P ,P 
0 голосов
/ 11 мая 2018
foreach (string previousValue in newChars)
{
   var result = previousValue.Substring(0,1);
}
0 голосов
/ 11 мая 2018

Следующее решение будет работать для вас. Я также обрежу пространство, поэтому, если вам нужно пространство, удалите обрезку. Я сделал это в Консольном приложении.

static void Main(string[] args)
{
    string str = "P ,B ,B P,P ,T ,P ,P B";
    string result = string.Empty;

    string[] newChars = str.Split(',');

    foreach (string previousValue in newChars)
    {
        if (previousValue.Trim().Length > 1)
            result += previousValue.Trim().First().ToString().Trim() + " ,";
        else
            result += previousValue.Trim() + " ,";
    }

    result = result.Trim(',');

    Console.WriteLine(str);
    Console.WriteLine(result);
    Console.ReadLine();
}

Компактное решение с использованием LINQ

static void Main(string[] args)
{
    string str = "P ,B ,B P,P ,T ,P ,P B";
    string result = string.Empty;

    string[] newChars = str.Split(',').Select(s => s.Trim()).ToArray();

    result = string.Join(" ,", newChars.Select(s => s.Length > 1 ? s.First().ToString() : s)); 

    Console.WriteLine(str);
    Console.WriteLine(result);
    Console.ReadLine();
}

OUTPUT

P ,B ,B P,P ,T ,P ,P B
P ,B ,B ,P ,T ,P ,P
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...