2014-06-10 7 views
-4

Как вы разделите строку между двумя символами?Разделить строку между двумя символами в C#

Мне нужно разбить строку между всеми вхождениями '┐' и '└'.

Образец Строка:

┐1 1.26582 0.0088└┐1 1.26682 0.0093└┐1 1.26922 0.0089└┐1 1.27172 0.0084└

Требуемый формат:

 
┐1 1.26582 0.0088└ 
┐1 1.26682 0.0093└ 
┐1 1.26922 0.0089└ 
┐1 1.27172 0.0084└ 
+4

Вы задали требование, но не вопрос. –

+1

Сплит ('┐'), я думаю? – apomene

+2

@GrantWinney: Он не хочет разделить _by_ двух символов, но _between_ два. –

ответ

1

Используйте регулярные-выражения:

Regex regex = new Regex("┐(.*?)└"); 
var matches = regex.Matches("┐1 1.26582 0.0088└┐1 1.26682 0.0093└┐1 1.26922 0.0089└┐1 1.27172 0.0084└"); 
foreach (Match match in matches) 
    Console.WriteLine(match.Value); 

Результат:

┐1 1.26582 0.0088└ 
┐1 1.26682 0.0093└ 
┐1 1.26922 0.0089└ 
┐1 1.27172 0.0084└ 
+0

Привет, Тим, проверьте мой код, а также комментарий –

+0

Спасибо за ответ. Можете ли вы мне помочь? Это мой код: Data = Port1.ReadExisting(); display.Invoke (новое действие (() => display.AppendText (Data);})); com.CommandText = "вставить в значения RawData (datetime, data) ('" + DateTime.Now.ToString() + "', '" + Data + "')"; com.ExecuteNonQuery(); Проблема заключается в том, что данные поступают в виде серии, что мне нужно сделать, так это разделение данных, таких как ┐1 1.26582 0.0088 – user3725798

0

Несмотря на плохо заданный вопрос, я думаю, что вопрос о том, как разделить между персонажами, а не на них, по крайней мере, немного интересен.

Это можно легко сделать с регулярным выражением, но сохраняющий только с C#, быстрый и грязный шаблон LINQ будет:

public static string[] SplitAfter(this string str, char splitter) 
{ 
    return str.Split(splitter).Skip(1).Select(s => splitter + s).ToArray(); 
} 

Так, чтобы:

  • Split на характер
  • Удалить пустой результат перед первым экземпляром символа
  • Добавить обратно в символ разделителя, который был удален Split

В случае с ФП, это будет называться как:

var result = "┐1 1.26582 0.0088└┐1 1.26682 0.0093└┐1 1.26922 0.0089└┐1 1.27172 0.0084└".SplitAfter('┐'); 
2

Пробовал & Испытано

string input = "┐1 1.26582 0.0088└┐1 1.26682 0.0093└┐1 1.26922 0.0089└┐1 1.27172 0.0084└"; 
string[] substrings = Regex.Split(input, @"(?<=[└])"); 

OUTPUT

┐1 1.26582 0.0088└ 

┐1 1.26682 0.0093└ 

┐1 1.26922 0.0089└ 

┐1 1.27172 0.0084└ 
+0

Спасибо за ответ. Можете ли вы мне помочь?
Это мой код:
Данные = Port1.ReadExisting();
дисплей.Invoke (новое действие (() =>
{
display.AppendText (Data);
}));
com.CommandText = "вставить в значения RawData (datetime, data) ('" + DateTime.Now.ToString() + "', '" + Data + "')";
com.ExecuteNonQuery();

Проблема заключается в том, что данные поступают в виде серии, что мне нужно сделать, это сплит данных, таких как ┐1 1.26582 0.0088└ – user3725798

+0

Извините, не понял ваш запрос –

+0

Могу ли я получить ur skype или электронную почту? – user3725798

0

Попробуйте: yourString.Split ('└'), а затем добавьте └ ко всем элементам возвращаемого массива, потому что вы потеряете их с помощью Split.

+0

он не будет включать разделитель :( –

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