2014-03-06 53 views
1

我有一個這樣的字符串:如果它後面有一個匹配的字符串,替換某個字符串?

this'is'my' 
test' 
string' 

我需要做一個查找和替換更喜歡使用正則表達式,在」。

我需要「與」來代替\ r \ n,但不改變其已經擁有的行間距的其他線路,基本上使它看起來像這樣:

this' 
is' 
my' 
test' 
string' 

我不能完全清除「\ r \ n」,然後將它們全部更改,因爲我需要這樣做是快速的,只改變需要更改的內容。

目前,我這樣做:

var EscapeCharactor = "?" 
var LineEndCharactor = "'" 

string result = Regex.Replace(data, @"(([^\" + EscapeCharactor + "]" + LineEndCharactor + @"[^\r\n|^\r|^\n])|(\" + EscapeCharactor + @"\" + EscapeCharactor + LineEndCharactor + "[^\r\n|^\r|^\n]))", "$1\r\n"); 
return ediDataUnWrapped; 

但它創造這樣的:

this'i 
s'm 
y' 
test' 
string' 

這可能僅僅改變特定的一些不包括額外的信還是我將不得不要刪除所有\ r \ n,然後將其添加到所有人中來進行管理?

+3

更好的重命名'char'變量。這很混亂。 – Dialecticus

+0

我的代碼被正確命名,我只是爲了這個例子而做了這個,但我也會在這裏改變它,所以人們閱讀它會更有意義。 – 5NAKE

回答

1

這裏是一個非正則表達式的方法:

string testString = @"this'is'my' 
test' 
string'"; 

var split = testString.Split(new[]{"'"}, StringSplitOptions.RemoveEmptyEntries) 
    .Select(s => s.Trim() + "'"); 
testString = string.Join(Environment.NewLine, split); 
+0

非常感謝,完美地工作,它是我的兩倍,甚至沒有正常工作。 – 5NAKE

0

如果你真的想使用正則表達式(Tim的解決方案看起來更好)

string test = "this'is'my'test'\r\nstring'"; 

    test = Regex.Replace(test,@"[\r\n]",""); 
    Regex rgx = new Regex("(\\w')([\\\\r]?[\\\\n]?)", RegexOptions.IgnoreCase); 
    var rep = rgx.Replace(test,"$0\r\n"); 

    Console.WriteLine(rep); 

結果

this' 
is' 
my' 
test' 
string' 

// KH

+0

我同意他看起來更好。而且這個對我來說並沒有完全的工作,如果'之前有空格,那麼它沒有添加換行符。 – 5NAKE

+0

嗯,我想空白空間只是一個調整,但如果蒂姆斯爲你工作,我會去那個,爲將來的工作與正則表達式這個網站是偉大的測試正則表達式語法http://derekslager.com/blog/posts/ 2007/09/a-better-dotnet-regular-expression-tester.ashx –

0

另一種有兩個simples String.Replace()解決方案:

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     string s = "this'is'my'test'\r\nstring'\r\n"; 
     s = s.Replace(Environment.NewLine, String.Empty); // remove /r/n 
     s = s.Replace("'", "'" + Environment.NewLine); // replace ' by ' + /r/n 
     Console.WriteLine(s); 
    } 
} 

輸出:

this' 
is' 
my' 
test' 
string' 
+0

@TimSchmelter我編輯了代碼片段。現在我保留了它。順便愛你。我最性感,你刪除空白。我把它提高了。 – aloisdg

相關問題