У меня есть список строк. Они выглядят так: this.is.the.first.one
that.is.the.second
thishasnopoint
У некоторых из них есть точки, а у некоторых нет точек. Мне нужно только обрезать строки от первой буквы до возможной первой точки, используя С#. Усеченные строки должны выглядеть следующим образом: this
that
thishasnopoint
Поиски в Google не дают мне никаких полезных подсказок.
обрезать строку от первой буквы до первой точки?
Ответы (3)
Простой метод таков:
string firstBit = wholeString.Split('.')[0];
Split
превращает его в массив строк, разделенных символом '.'
. В случае thishasnopoint
массив имеет только один элемент.
person
David M
schedule
18.01.2012
Slick..., и для тех строк, которые не имеют точки, всегда будет возвращена вся строка в нулевой позиции массива... Круто...
- person DRapp; 18.01.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
person
gdoron is supporting Monica
schedule
18.01.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();
}
}
Работает быстрее, чем метод "разделить", но сложнее.
person
nazlo
schedule
18.01.2012
Как разделение реализовано внутри? Что делает это быстрее?
- person tbddeveloper; 18.01.2012
Э... почему предполагается, что это зависит от производительности? Ваш код значительно менее ремонтопригоден, чем версии, использующие Split. Кроме того, если вам дана строка вроде 111.234, что не исключается OP, ваш код приведет к исключению ArgumentException.
- person David M; 18.01.2012
Hammerstein, метод split создает массив строк, например, для input == this.is.first.phrase функция split('.') вернет массив String[] {this, is, first, фраза}, в котором только ноль' st элемент используется, но другие должны быть GC. Дэвид М, как сказал создатель поста, результатом должна быть подстрока между первой буквой и первой точкой. Затем, если ввод состоит только из цифр, создается исключение.
- person nazlo; 20.01.2012