2017-05-23 76 views
-2

我有很多字符串與下面的模式(格式):C#檢測最後`Enter`字符串

aaaaaaa aa aa 
bbbbbbbbbbbbbbb bb bbbbb bbb bb 
ccccc c cc ccc 

XXXX XX 
zzzzzz zzz 

OR:

aaaaaaa aa aa 
bbbbbbbbbbbbbbb bb bbbbb bbb bb 
ccccc c cc ccc 

dddd dddd 

XXXX XX 
zzzzzz zzz 

OR:

aaaaaaa aa aa 
bbbbbbbbbbbbbbb bb bbbbb bbb bb 
ccccc c cc ccc 

dddddddd 


eeeee 

XXXX XX 
zzzzzz zzz 

我想用YYYY替換​​。我想我需要檢測字符串中的最後Enter並執行操作。我怎樣才能做到這一點?

+4

我很困惑:如果您要更換'XXXX XX',你爲什麼要尋找最後的換行符。你爲什麼不尋找'XXXX XX'?你到目前爲止嘗試過什麼? –

+0

btw:'yourText.LastIndexOf('\ n')'? –

+0

目前還不清楚你想要做什麼,因爲你的問題的標題與問題中的問題陳述不同。 –

回答

2

我會做這樣的事情。如果所討論的字符串總是在第二行到最後一行,我會將字符串拆分爲一個字符串數組,每行一個字符串。然後找出有多少行(數組中的字符串)。感興趣的對象是這個數字-2。然後用YYYY替換這個字符串。

編輯:

var result = Regex.Split(input, "\r\n|\r|\n"); 
int len = result.Length; 
result[len - 2] = "YYYY"; 
var output = string.Join(Environment.NewLine, result); 
+0

你應該爲此提供一個例子 - 它會起作用,但如果沒有更具體的東西,這不是一個很好的答案,我想。 – MetaColon

0

如果只是模式,這裏是用正則表達式的例子:

\b\S{4}\s\S{2}\b 

你可以使用這個表達式是這樣的:

var regex = new Regex(@"\b\S{4}\s\S{2}\b"); 
var result = regex.Replace(inputString, "YYYY"); 

它尋找一個字邊界(如返回),然後是四個非空白字符,然後是一個空白字符,兩個非空白字符和一個字邊界。它應該做你想做的。

但是,根據您輸入這可能是一個更好的主意,用這個表達式:

\b\S{4} \S{2}\b 

所以我取代了空格字符與實際空格字符。當然,它仍然可能發生,你的一個角色被視爲一個字的邊界,然後我不得不看到你的輸入的例子。

這裏是它如何工作的例子:

example

這是在C#的互動,其工作方式幾乎一樣普通的C#。

編輯

,因爲我意識到你的模式相關的行以空白結束,你可以使用這個模式,以及:

\b\S{4} \S{2}\b\n 

這將可能效果更好。但是,您必須將其替換爲"YYYY\n"

+0

這只是一個模式。 – distance

+0

@distance對不起,我編輯了我的答案。 – MetaColon

+0

它無法正常工作。它只是用'YYYY'取代最後一個輸入。 – distance