我是.net网络表单的新手,所以任何人都可以帮助我。
如何在asp.net的字符串中找到第五个空格的位置?
我有
string s="aa bb cc dd ee ff gg hh ii kk"
所以我想把子串直到第五个空格,所以新的字符串应该是:
"aa bb cc dd ee"
答案 0 :(得分:8)
获取子字符串"aa bb cc dd ee"
:
String.Join(" ", "aa bb cc dd ee ff gg hh ii kk".Split(' ').Take(5))
找到第五个空间的位置,就像你原来问的那样:
"aa bb cc dd ee ff gg hh ii kk".Split(' ').Take(5).Sum(a => a.Length + 1) - 1
说明:
.Split(' ')
- 在空格上拆分字符串,因此我们现在有一个string[]
包含:aa, bb, cc, dd, ee, ff, gg, hh, ii, kk
.Take(5)
- 在IEnumerable<string>
中获取该数组的前五个元素:aa, bb, cc, dd, ee
.Sum(a => a.Length + 1)
- 将各个元素的所有长度(在这种情况下,所有2
加在一起,并为由于拆分而丢失的空格添加一个- 1
删除空格的额外计数另一种方法是获取上面子字符串的.Length
。
答案 1 :(得分:4)
您可以拆分字符串,只取前5个子字符串,然后再将它们连接在一起,如下所示:
string s = "aa bb cc dd ee ff gg hh ii kk";
string output = String.Join(" ", s.Split(new[] { ' ' }, 6).Take(5));
Console.WriteLine(output); // "aa bb cc dd ee"
或者对于更直接的方法,只需使用IndexOf
,直到找到所需的空格数:
string s = "aa bb cc dd ee ff gg hh ii kk";
var index = -1;
for (int i = 0; i < 5; i++)
{
index = s.IndexOf(" ", index + 1);
}
string output = s.Remove(index);
Console.WriteLine(output); // "aa bb cc dd ee"
答案 2 :(得分:2)
或......
var nrOfBlanks = 0;
var firstFive = new String(s.TakeWhile(c =>
(nrOfBlanks += (c == ' ' ? 1 : 0)) < 5)
.ToArray());
...仅仅因为使用稍微过于复杂的Linq表达式的字符串操作感觉非常有趣和性感。
答案 3 :(得分:1)
您可以使用String.Split
方法;
string s = "aa bb cc dd ee ff gg hh ii kk";
var array = s.Split( new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);
string newstring = "";
for (int i = 0; i < 5; i++)
newstring += array[i] + " ";
Console.WriteLine(newstring.Trim());
输出将是;
aa bb cc dd ee
这里有 Demonstration
。
答案 4 :(得分:0)
linq版本:
var fifthBlankIndex = s.Select((c, index) => new{ c, index })
.Where(x => Char.IsWhiteSpace(x.c))
.ElementAtOrDefault(4);
int result = -1;
if(fifthBlankIndex != null)
result = fifthBlankIndex.index; // 14
的 Demo 强>
修改如果您只想采用前五个完全不同的要求:
string fiveWords = string.Join(" ", s.Split().Take(5));
答案 5 :(得分:0)
你可以使用string.split('')这返回字符串的数组。
string s = "aa bb cc dd ee ff gg hh ii kk";
//
// Split string on spaces.
// ... This will separate all the words.
//
string[] words = s.Split(' ');
foreach (string word in words)
{
Console.WriteLine(word);
}
因此,一旦获得数组,就可以连接任意数量的单词。所以在你的情况下循环到单词数组中的第四个索引并连接插入空格。
答案 6 :(得分:0)
使用Substring
:
string Requiredpart= s.Substring(0, s.IndexOf(' ', theString.IndexOf(' ') + 4));
答案 7 :(得分:0)
您可以使用空白字符
进行拆分string [] words = s.Split('');
然后根据自己的喜好撰写单词。
我希望你觉得这很有用。 尼古拉