我有一个字符串列表。他们看着像是:
this.is.the.first.one
that.is.the.second
thishasnopoint
他们中的一些人有积分,但其中一些没有积分。我只需要使用c#在可能的第一个点之前从其第一个字母截断字符串。截断的字符串应如下所示:
this
that
thishasnopoint
谷歌搜索没有向我展示任何有用的线索。
答案 0 :(得分:7)
简单的方法就是:
string firstBit = wholeString.Split('.')[0];
Split
将其转换为字符串数组,在'.'
字符上分隔。在thishasnopoint
的情况下,数组只有一个元素。
答案 1 :(得分:1)
现在我明白了,字符串只是那些序列中的一个...所以这样就可以了:
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
答案 2 :(得分:1)
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();
}
}
工作得更快而不是“拆分”方法,但它更复杂。