2013-10-25 47 views
0

我是.net网络形式的新手,所以任何人都可以帮助我。如何查找字符串中第五个空格的位置?

如何找到asp.net中字符串中第五个空格的位置?

我已经

string s="aa bb cc dd ee ff gg hh ii kk" 

所以我想让子,直到第五个空格所以新的字符串应该是:

"aa bb cc dd ee" 

回答

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以上的子串。

+0

一个小的调整 - 你可以使用'.Split()' - 它默认情况下被空白分割 –

+1

@lazyberezovsky公平 - 我喜欢明确地显示我在分裂的东西 - 留下更少的想象力:) –

+0

真的很谢天谢地了。我为我的两个问题得到了答案,再次感谢。欢呼! – Kohok

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" 
+0

真的非常感谢。我为我的两个问题得到了答案,再次感谢。欢呼! - – Kohok

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)); 
0

你可以使用s tring.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); 
} 

所以一旦你得到数组,你可以连接尽可能多的单词你想要的。所以在你的情况循环直到字数组中的第4个索引,并连接插入之间的空白。

0

使用Substring

string Requiredpart= s.Substring(0, s.IndexOf(' ', theString.IndexOf(' ') + 4)); 
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

0

你可以使用空格字符分割

string [] words = s.Split('');

然后根据你的喜好编写单词。

我希望你觉得这个很有用。 尼古拉

2

或者......

var nrOfBlanks = 0; 
var firstFive = new String(s.TakeWhile(c => 
             (nrOfBlanks += (c == ' ' ? 1 : 0)) < 5) 
          .ToArray()); 

...只是因为使用稍微过于复杂的LINQ表达式字符串操作感觉非常有趣和性感。

+1

+1的低效率,但确实非常有趣和性感的解决方案 –

相关问题