簡體   English   中英

在C#中刪除字符串中的某些空白

[英]Remove certain empty spaces in a string in C#

我有一個字符串如下:

strMyString = "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";

我想在名稱后刪除空格。

我嘗試使用

string.Replace(" ", string.Empty)

但這將刪除字符串中的所有空白,我只想刪除名稱部分之后的空白。

我的最終輸出應該是這樣的

strMyString = "4654564-|@$@|-Jennifer Austin-$@%@$-646565546-|@$@|-Dutchin Henry LLC-$@%@$-444309386-|@$@|-Winston Cooper LLC";

名稱之間的空格應完整無缺。

有什么幫助嗎? 提前致謝。

    string strMyString = "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";
    string pattern = "\\s+-";
    string replacement = "-";
    string result = Regex.Replace(strMyString, pattern, replacement);

https://dotnetfiddle.net/luJHd3

在您發表評論之后,應執行以下操作:

var newText = string.Join("-$@%@$", text.Split(new[] {"-$@%@$"}, 
                                               StringSplitOptions.None)
                                        .Select(t => t.TrimEnd()));
        string strMyString = "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";
        var subStrings = strMyString.Split('-').ToList();
        var newSubstrings = new List<string>();
        subStrings.ForEach(substring => newSubstrings.Add(substring.Trim(' ')));
        var newString = string.Join("-",newSubstrings);
        Console.WriteLine(newString);

假設模式是一組數字/名稱對,內部用“-| @ $$ ||-”分隔,而這些對用“-$ @%@ $-”分隔,這似乎可行:

 string input =
     "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";
 const string separator = "-$@%@$-";
 const string pattern = @"\s+-\$@%@\$-";
 var regex= new Regex(pattern);
 var firstPass = regex.Replace(input, separator);
 var result = firstPass.TrimEnd(' ');

運行后, result如下:

"4654564-|@$@|-Jennifer Austin-$@%@$-646565546-|@$@|-Dutchin Henry LLC-$@%@$-444309386-|@$@|-Winston Cooper LLC"

Regex取消了兩對之間的分隔符,刪除了分隔符之前的所有空格。 然后,尾隨的空格仍然存在,因此我使用TrimEnd將其刪除

我能想到的最簡單,最容易理解的解決方案是:

strMyString = strMyString.Replace(@"    -$@%@$", @"-$@%@$").TrimEnd(' ');

正如已經指出的那樣,如果存在不同數量的空格,那么它將不起作用,這將是一個更好的解決方案:

RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
strMyString = regex.Replace(strMyString, "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM