我有一个字符串列表。它们看起来像:this.is.the.first.one
that.is.the.second
thishasnopoint
他们中的一些人有积分,但有些人没有积分。我只需要使用c#从可能的第一个点之前的第一个字母截断字符串。截断的字符串应如下所示:this
that
thishasnopoint
谷歌搜索没有给我任何有用的线索。
简单的方法是:
string firstBit = wholeString.Split('.')[0];
Split
将其转换为字符串数组,以'.'
字符分隔。在thishasnopoint
的情况下,数组只有一个元素。
现在我明白了,字符串只是其中一个序列。。。这样就可以了:
var result = strings.Split('.').First();
如果字符串是:this.is.the.first.one that.is.the.second thishasnopoint
-一个字符串this:
var firstWords = new List<string>();
strings.Split(' ').ForEach(x => firstWords.Add(x.Split('.').First()));
将返回:
带三个字符串的List<string>
-this that thishasnopoint
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();
}
}
工作速度比"拆分"方法更快,但它更复杂。