在給定的句子中,我想分成10個字符串。字符串中的最後一個單詞不應該不完整。分割應根據空間或,
或.
C清晰分隔符
例如進行: this is ram.he works at mcity.
現在的10個字符的字符串是, this is ra.
但輸出應該是, this is.
最後一個字不應該是不完整
在給定的句子中,我想分成10個字符串。字符串中的最後一個單詞不應該不完整。分割應根據空間或,
或.
C清晰分隔符
例如進行: this is ram.he works at mcity.
現在的10個字符的字符串是, this is ra.
但輸出應該是, this is.
最後一個字不應該是不完整
您可以使用正則表達式來檢查匹配後的字符不是單詞字符:
string input = "this is ram.he";
Match match = Regex.Match(input, @"^.{0,10}(?!\w)");
string result;
if (match.Success)
{
result = match.Value;
}
else
{
result = string.Empty;
}
結果:
this is
的另一種方法是建立串起來的記號標記,直到將另一個令牌會超出字符限制:
StringBuilder sb = new StringBuilder();
foreach (Match match in Regex.Matches(input, @"\w+|\W+"))
{
if (sb.Length + match.Value.Length > 10) { break; }
sb.Append(match.Value);
}
string result = sb.ToString();
+1甚至沒有考慮使用正則表達式。好多了! – 2010-07-30 12:39:33
如果不知道是你正在尋找的東西。請注意,這可以做得更乾淨,但應該讓你開始......(可能要使用StringBuilder而不是String)。
char[] delimiterChars = { ',', '.',' ' };
string s = "this is ram.he works at mcity.";
string step1 = s.Substring(0, 10); // Get first 10 chars
string[] step2a = step1.Split(delimiterChars); // Get words
string[] step2b = s.Split(delimiterChars); // Get words
string sFinal = "";
for (int i = 0; i < step2a.Count()-1; i++) // copy count-1 words
{
if (i == 0)
{
sFinal = step2a[i];
}
else
{
sFinal = sFinal + " " + step2a[i];
}
}
// Check if last word is a complete word.
if (step2a[step2a.Count() - 1] == step2b[step2a.Count() - 1])
{
sFinal = sFinal + " " + step2b[step2a.Count() - 1] + ".";
}
else
{
sFinal = sFinal + ".";
}
你怎麼知道最後一個詞是不完整的?您可以查找三個分隔符的正則表達式,然後使用它,但不完整性需求需要更多信息。 – 2010-07-30 11:50:41
如果第一個單詞超過10個字符會發生什麼? – 2010-07-30 11:51:11
你說的字符串分割應該基於SPACE *或。你沒有在空間上分裂? – Nix 2010-07-30 12:24:07