2013-07-27 3 views
0

В приложении с окнами форм C# у меня есть строки разной длины и формата, из которых я хотел бы отображать предварительный просмотр первых 25 символов без каких-либо разрывов строк в предварительном просмотре. Строка предварительного просмотра должна быть , а затем «...».вырезать строку с правой стороны до максимальных 25 символов, даже если строка меньше 25 символов, удалять новые строки всех видов.

У меня есть несколько строк менее 25 символов, но они также могут содержать разрывы строк, а иногда и нет. новая строка может быть как <br>, <br />, /n, /r, /r/n, /n/n или Environment.Newline, как в C#. С короткими строками я получаю исключения из-за того, что TextX.SubString (0, 25) не может быть применен.

Какая готовая функция в рамках этой системы сделана наилучшим образом? Возможно, у вас есть идея, как это решить.

В конце следует добавить «...», но поскольку строка уже определена, не может быть прикреплено что-то к ней. TextX.Append не существует в содержимом.

ответ

1

Кажется, что нет готовых функций в рамках, но вы можете сделать что-то вроде этого:

public static String Preview(String value) { 
    String[] newLines = new String[] { "<br>", "<br />", "\n", "\r", Environment.NewLine }; 

    foreach (String newLine in newLines) 
     value = value.Replace(newLine, ""); // <- May be space will be better here 

    if (text.Length > 25) 
     return value.Substring(0, 25) + "…"; 
     // If you want string END, not string START, comment out the line above and uncomment this 
     // return value.Substring(value.Length - 25) + "…"; 
    else 
     return value; 
    } 

    ... 
    // Test sample 

    String text = "abcd<br>efgh\r\r\n\n1234567890zxy\n\n1234567890abc"; 
    String result = Preview(text); // <- abcdefgh1234567890zxy1234… 

    String text2 = "abcd<br>efgh\r\r"; 
    String result2 = Preview(text2); // <- abcdefgh