обрезать строку от первой буквы до первой точки? - PullRequest
0 голосов
/ 18 января 2012

У меня есть список строк. Они похожи: this.is.the.first.one that.is.the.second thishasnopoint У некоторых из них есть очки, но у некоторых нет очков. Мне нужно только обрезать строки с первой буквы до возможной первой точки с помощью c #. Усеченные строки должны выглядеть следующим образом: this that thishasnopoint Поиски в Google не показывают мне никаких полезных подсказок.

Ответы [ 3 ]

7 голосов
/ 18 января 2012

Простой метод такой:

string firstBit = wholeString.Split('.')[0];

Split превращает его в массив строк, разделенных символом '.'. В случае thishasnopoint массив содержит только один элемент.

1 голос
/ 18 января 2012
string getTruncated(string s) {
    int startIdx = -1;
    for (int i = 0; i < s.Length; ++i) {
        if (Char.IsLetter(s[i])) {
            startIdx = i;
            break;
        }
    }
    int endIdx = s.IndexOf('.');
    if (startIdx != -1) {
        if (endIdx != -1) {
            return s.Substring(startIdx, endIdx);
        } else {
            return s.Substring(startIdx);
        }
    } else {
        throw new ArgumentException();
    }
}

Работает быстрее, чем метод "split", но он более сложный.

1 голос
/ 18 января 2012

Теперь я правильно понял, строка состоит только из одной из этих последовательностей ... так что это будет делать:

var result = strings.Split('.').First();

Если строка была: this.is.the.first.one that.is.the.second thishasnopoint - одна строка это:

var firstWords = new List<string>();
strings.Split(' ').ForEach(x => firstWords.Add(x.Split('.').First()));

вернется:

List<string> с тремя строками - this that thishasnopoint

...