2013-05-19 2 views
-3

Я искал какое-то время и до сих пор ничего не нашел.Сплит только возвращает System.String [] вместо фактического значения

Моя проблема: я хочу просто разделить значение, доставленное из текстового поля , как только появится 1.

string t1 = textBox1.Text; 
string[] split = t1.Split(new Char[] {'1'}); 

Я доставляю значение, записанное в моей переменной, в другое текстовое поле. Теперь моя проблема в том, что он не отображает материал, который приходит после 1, как и в методе split. Вместо этого он отображает System.String []. Кто-нибудь поможет?

Edit:

полный код часть моей программы:

{ 
       string t1 = textBox1.Text; 
       string[] split = t1.Split(new Char[] { }); 
       textBox1.Text = split.ToString(); 
       if (split.Length == 2) 
        textBox4.Text = split[1];   


       url = "https://www.google.de/search?q=" + textBox3.Text + "&um=1&client=" + split[1] + "-a&rls=org.mozilla:de:official&hl=de&" + textBox2.Text + "=lnms&sa=X&ei=Re2YUd-RCYiC4gThw4GwAQ&ved=0CAkQ_AUoAA&biw=1920&bih=951 

       textBox4.Text = url; 
      } 
+0

Какой язык это? – piokuc

+0

Как вы хотите преобразовать массив в строку? – SLaks

+0

Я не знаю, не могли бы вы мне сказать? @ SLaks – user2399053

ответ

3

Я думаю, что вы, вероятно, назначая результат в текстовом поле, как это:

textBox2.Text = split.ToString(); 

ToString() будет преобразовывать массив string[] split, который по умолчанию просто возвращает имя типа, в данном случае System.String[].

Для того, чтобы использовать его, массив split должен иметь по крайней мере два элемента; а именно, все подстроки в текстовом поле, которые были разделены / символами.

Я подозреваю, что вы хотите использовать все символы после / как так:

if (split.Length >= 2) 
    textBox2.Text = split[1]; 

String.Split() будет работать так:

Если ввод текста был: "ABCD/EFGH", то split бы :

split[0] == "ABCD"; 
split[1] == "EFGH"; 

А если ваш входной текст был: "ABCDEFG", то split будет:

split[0] == "ABCDEFG"; // There is no split[1] 

И если ваш входной текст был: "AB/CD/EF", то split будет:

split[0] == "AB" 
split[1] == "CD" 
split[2] == "EF" 

Обратите внимание, что эти два случая оба есть split.Length != 2.

Что вы хотите сделать для последнего случая, где есть два (или даже больше) / символов на входе?


[EDIT] Глядя на последнего обновления, эта строка кода является неправильным:

textBox1.Text = split.ToString(); 

Оно должно быть:

if (split.Length > 0) 
    textBox1.Text = split[0]; 

Прочитайте первую часть моего ответа выше для описание примерно split.ToString()!

Кроме того, эта линия не так:

string[] split = t1.Split(new Char[] { }); 

Это должно быть

string[] split = t1.Split(new [] {'/'}); 

Вы не указали, какой символ разделить на. Из ваших комментариев ниже этого андерсера, я предполагаю, что вы действительно хотите разделить на '/'.

Наконец-то! Ваша линия, начиная с:

url = "https: ... 

использует split[1] так что вам нужно, чтобы защитить его с помощью, если:

if (split.Length > 1) 
    url = "https: ... 
else 
    url = "<DIDN'T WORK!>"; // Or something! :) 
+0

yes, теперь, если я введу что-то в textBox1, это изменится на System.String []. – user2399053

+0

также появляется сообщение об ошибке, говорящее, что этот индекс выходит за рамки arrayrange – user2399053

+0

Можете ли вы попробовать этот код, который я предложил? Элемент 'if (split.Length> = 2) textBox2.Text = split [1];'. (Я предполагаю, что вы вызываете второй текстовый ящик, вам нужно будет изменить свой код на то, что он действительно вызвал). –

Смежные вопросы