Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串操作,将字符串截断为C上的指定表达式#_C#_.net_Regex - Fatal编程技术网

C# 字符串操作,将字符串截断为C上的指定表达式#

C# 字符串操作,将字符串截断为C上的指定表达式#,c#,.net,regex,C#,.net,Regex,如何从每行中删除三个以上的空格,并将字符串结束在那里,以便使用c#查看右侧的行 可以使用string.Split方法生成字符串[]。根据数组计数,您可以获取所需的元素 string base string = "PO BOX XXX OVERDUE - PAY NOW"; string[] delimittedStringArray = baseString.Split(' '); if(delimittedStringArray.Length > 3) { // Take the d

如何从每行中删除三个以上的空格,并将字符串结束在那里,以便使用c#查看右侧的行


可以使用string.Split方法生成字符串[]。根据数组计数,您可以获取所需的元素

string base string = "PO BOX XXX OVERDUE - PAY NOW";
string[] delimittedStringArray = baseString.Split(' ');
if(delimittedStringArray.Length > 3)
{
  // Take the data from array
}
else
{
  // Do what ever
}
//我不确定在if条件下是长度还是计数

input = "PO BOX XXX                                       OVERDUE - PAY NOW  ";
input = input.Remove(input.IndexOf("   "));
副题索引中有3个空格

或者,如果您不知道是否有选项卡或空格,可以进行拆分-

input = input.Split(new char[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries)[0];
您可以这样做:

var input = new string[3] { "PO BOX XXX                                       OVERDUE - PAY NOW  ", 
                                      "ClientB                                AMOUNT CARRI",
                                      "PO BOX 400                                                    FORWARD TO N  "
                                    };

    for (int x = 0, len = input.Length; x != len; x++)
    {
         input[x] = Regex.Replace(input[x], @"\s{3}[^\n]+", string.Empty);
    }
     //input is ["PO BOX XXX","ClientB","PO BOX 400"]
var file = @"D:\file.txt";
var lines = File.ReadAllLines(file);
var output = lines.Select(str => Regex.Replace(str, @"\s{3}[^\n]+$", string.Empty)); // is ["PO BOX XXX","ClientB","PO BOX 400"]
使用linq:

 var output = input.Select(str => Regex.Replace(str, @"\s{3}[^\r\n]+$", string.Empty));
如果您正在从文件中读取此字符串,则可以执行以下操作:

var input = new string[3] { "PO BOX XXX                                       OVERDUE - PAY NOW  ", 
                                      "ClientB                                AMOUNT CARRI",
                                      "PO BOX 400                                                    FORWARD TO N  "
                                    };

    for (int x = 0, len = input.Length; x != len; x++)
    {
         input[x] = Regex.Replace(input[x], @"\s{3}[^\n]+", string.Empty);
    }
     //input is ["PO BOX XXX","ClientB","PO BOX 400"]
var file = @"D:\file.txt";
var lines = File.ReadAllLines(file);
var output = lines.Select(str => Regex.Replace(str, @"\s{3}[^\n]+$", string.Empty)); // is ["PO BOX XXX","ClientB","PO BOX 400"]

你需要更好地解释截断的标准。当前您的描述与示例不符。很抱歉,文本编辑器删除了所有空格。下面是我想做的:[link]@Arun不一定是三个空格,但上面有很多空格。有时,由于键入错误,客户端名称之间可能有2个空格,所以我要小心。实际上,我的字符串之间有变量空格。它是一个CSV文件,但当我使用IndexOf(“”)时,它不会返回任何内容。[链接]如上所述,我错误地认为三个空格可以解决问题。你知道我怎么能像这样变换吗(下面的链接)[链接]看看编辑-所以如果你不知道有什么样的空间-标签或空间,那就行了。