如何忽略第2個字串如何跳過在C#中的字符串開始2個字
,如:
String x = "hello world this is sample text";
在此
的前兩個單詞是世界你好,所以我想跳過它們,但下一次 也許這些單詞不會相同,就像它們可能成爲「Hakuna Matata」一樣,但該程序也應該跳過它們。 P:不建議刪除字符,它不會在這裏工作我猜,因爲我們不知道這些字的長度是多少,我們只是想跳過前兩個字。並打印剩下的部分。
如何忽略第2個字串如何跳過在C#中的字符串開始2個字
,如:
String x = "hello world this is sample text";
在此
的前兩個單詞是世界你好,所以我想跳過它們,但下一次 也許這些單詞不會相同,就像它們可能成爲「Hakuna Matata」一樣,但該程序也應該跳過它們。 P:不建議刪除字符,它不會在這裏工作我猜,因爲我們不知道這些字的長度是多少,我們只是想跳過前兩個字。並打印剩下的部分。
請試試這個代碼:
String x = "hello world this is sample text";
var y = string.Join(" ", x.Split(' ').Skip(2));
它將由空格分割字符串,跳過兩個元素再加入所有元素成一個字符串。
UPDATE:
如果你有多餘的空間比第一去除多餘的空格和刪除的話:
String x = "hello world this is sample text";
x = Regex.Replace(x, @"\s+", " ");
var y = string.Join(" ", x.Split(' ').Skip(2));
UPDATE:
另外,爲了避免多餘的空格,通過建議戴(在下面的評論)我用StringSplitOptions Split():
String x = "hello world this is sample text";
var y = string.Join(" ", x.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).Select(i => i.Trim()).Skip(2));
如果有順序匹配字符,'String.Split(Char)'的缺省行爲將導致空元素,而使用''''只會匹配空格字符。我建議使用'String.Split(null,StringSplitOptions.RemoveEmptyEntries)'代替(它匹配所有空白元素,並且不包含重複項)。 – Dai
謝謝@ kat1330 –
我不推薦使用IndexOf
,因爲它在連續的空格字符的情況下不會幫助您,而使用String.Split(null)
而String.Join
效率不高。你可以做到這一點使用正則表達式或FSM解析器:
Int32 startOfSecondWord = -1;
Boolean inWord = false;
Int32 wordCount = 0;
for(int = 0; i < input.Length; i++) {
Boolean isWS = Char.IsWhitespace(input[i]);
if(inWord) {
if(isWS) inWord = false;
}
else {
if(!isWS) {
inWord = true;
wordCount++;
if(wordCount == 2) {
startOfSecondWord = i;
break;
}
}
}
}
if(startOfSecondWord > -1) return input.Substring(startOfSecondWord);
@Andrew如果你已經熟悉狀態機的構造,這並不複雜,但我很欣賞它的第一眼看起來很嚇人。這種方法的一個優點是純粹的速度:內部分配爲零,它在'O(n)'時間內運行,甚至在'Substring'調用之前甚至遍歷整個字符串。 – Dai
使用正則表達式應該這樣做:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "hello world this is sample text";
string pattern = @"(\w+\s+){2}(.*)";
string replacement = "$1";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
}
}
找到第二空間,並從空格字符的第二個索引什麼離開 – vu1p3n0x
子串到字符串的末尾。 – David