从第一个点之前的第一个字母截断字符串?

时间:2012-01-18 11:38:18

标签: c# string truncate

我有一个字符串列表。他们看着像是: this.is.the.first.one that.is.the.second thishasnopoint 他们中的一些人有积分,但其中一些没有积分。我只需要使用c#在可能的第一个点之前从其第一个字母截断字符串。截断的字符串应如下所示: this that thishasnopoint 谷歌搜索没有向我展示任何有用的线索。

3 个答案:

答案 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();
    }
}

工作得更快而不是“拆分”方法,但它更复杂。