2012-03-01 45 views

回答

1

你可以结合使用SubstringIndexOf

Dim amazing = "Stackoverflow is amazing" 
Dim notAmazing = amazing.Substring(0, amazing.IndexOf(" is amazing")) 

或者你可以使用Remove

Dim notAmazing = amazing.Remove(amazing.IndexOf(" is amazing")) 

或(由paulius_i作为回答)Replace

Dim notAmazing = amazing.Replace(" is amazing", String.Empty) 

编辑:你已经基本上修改你的问题,所以这里是获得前n个单词的方法字符串:

Dim amazing = "Stackoverflow is an amazing resources for developers" 
Dim words = amazing.Split({" "c}, StringSplitOptions.RemoveEmptyEntries) 
Dim first5Words = String.Join(" ", words.Take(5)) 
+0

数据库将返回不同的字符串。我改变了我的答案,说清楚了。对于那个很抱歉。 – Joshua 2012-03-01 12:11:03

+0

@BonyfusMartin:据此编辑我的答案。 – 2012-03-01 12:17:43

+0

非常感谢。将应用它并看到.. – Joshua 2012-03-01 12:19:42

0

好吧,票友一点点解决一个惊人的资源:

int remainingWords = 5; 
System.Text.RegularExpressions.Regex.Replace("Stackoverflow is an amazing resources for developers", "(.+?)|(.+?)", match => 
     { 
     return remainingWords-- > 0 ? match.Value : ""; 
     }); 
+0

嗯...我给的字符串只是一个例子。它将返回不同的字符串。假设我有一个字符串数据集,其中有从数据库返回的不同字符串。从那些我只需要保留前5个字。我应该在问题中说清楚。 – Joshua 2012-03-01 12:07:21

+0

我现在才知道它是在vb.net下标记的。对不起,C#代码。 – 2012-03-01 12:48:25

2

首先拆分字符串进言:

var words = inputString.Split(' ', StringSplitOptions.RemoveEmptyEntries) 

虽然你可能需要使用过载,以应付其他空白字符。

下一步采取的第5个字:

var firstFive = words.Take(5) 

这将返回最多的前五个词,所以如果有输入字符串小于5都不会有问题。

最后重新一句话:

var output = string.Join(" ", firstFive) 

很明显,你可以结合这些步骤。