2013-07-23 2 views
1

Я думал, что это было просто, но это просто пинает мой зад.C# split string с первым знаком символа

У меня есть эта строка 21. A.Person Я просто хочу получить из этого.

Я стараюсь следующее, но я только получаю 21

string[] pName = values[i, j].ToString().Split(new char[] { '.' }, 2); 
pName[1] ??? 

values[i, j].ToString() = 21. A.Person да и я проверил это.

+6

Это похоже на ошибку где-то, что вы не показываете нам. Если я запустил эту строку кода: «21. A.Person» .Split (новый char [] {'.'}, 2) [1] 'в linqpad результат« A.Person ». Таким образом, ваш код кажется прекрасным, и ваша проблема, вероятно, в другом месте ... – Chris

+1

Вы должны попробовать, разделив его символом пробела (''). – captainsac

ответ

4

Каждый дает вам альтернативные решения, когда ваш должны работы. Проблема заключается в том, что значения [I, J] должен не равна 21. A.Person

Я включил его в простой тест ..

[Test] 
    public void junk() 
    { 
     string[] pName = "21. A.Person".Split(new char[] { '.' }, 2); 
     Console.WriteLine(pName[1]); 
    } 

Что печатать? (С пространством спереди, потому что вы не обрезали пространство)

5

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

var substr=""; 
var indedx = yourString.IndexOf('.'); 
if(index>-1) 
    substr = yourString.Substring(index); 
substr=substr.Trim(); 

Для строки "21. A.Person" должен вернуть "A.Person"

+3

нужно добавить чек на -1 как индекс и быть хорошим решением, я думаю – orrollo

+0

@orrollo спасибо, отредактировал :) – wudzik

2

Я хотел бы использовать подстроку() с позиции первого '' в качестве начальной точки:

var name = sourceString.Substring(sourceString.IndexOf('.')); 
1
string pName = values[i, j].ToString().Substring(values[i, j].ToString().IndexOf('.')+1); 
1

Попробуйте что-то вроде этого:

var str = "21. A.Person"; 
    var index = str.IndexOf('.') +1; 
    var substr = str.Substring(index, str.Length - index);