【问题标题】:splitting of dynamic text in a textbox c#在文本框中分割动态文本c#
【发布时间】:2016-07-01 06:40:46
【问题描述】:

用户将在单个文本框中输入他的详细信息,如下所示

在文本框中输入

S。编号 姓名 年龄 性别 特许权状态 教练座位/泊位/WL No

当前状态教练座位/泊位/WL没有ID类型/ID号

1 AYAN PAL 40 男 CNF S7 49 (LB) CNF S7 49 (LB)

CS 代码

            int indexof1 = strMain.IndexOf("1   ");
            int indexof40 = strMain.IndexOf("40 ");
            int indexofstts = strMain.IndexOf("Male     ");
            int effectiveindexof1 = indexof1 + "1   ".Length;
            int effectiveindexof40 = indexof40 + "40    ".Length;
            string pname = strMain.Substring(effectiveindexof1,indexof40-effectiveindexof1);

我使用子字符串,但在这里没有帮助,因为用户提供的所有信息都是动态的

【问题讨论】:

  • 我认为这是一个不好的方法。为什么不用.CSV 输入
  • string.Split() 方法呢?
  • 我的客户想要更轻松地做事,他只是想复制粘贴,让我的工作更加困难,对此有什么想法吗?
  • @JiříVrbas 我不太了解字符串拆分的工作原理
  • 每条记录总是有空间?

标签: c# substring


【解决方案1】:

你可以尝试这样拆分

var input = "1 AYAN PAL 40 Male CNF S7 49 (LB) CNF S7 49 (LB)";
var fields = input.Split(' ');

然后像这样访问每个元素

string id = fields[0];
string name = fields[1];
.....

编辑:字数不同

        var fullName = string.Empty;
        int i = 0;
        int number = 0;
        var id = fields[i++];
        while (!int.TryParse(fields[i], out number))
        {
            fullName += fields[i++] + " ";
        }
        fullName = fullName.TrimEnd();
        var age = fields[i++];
        var gender = fields[i++];
        ............

【讨论】:

  • 如果他输入 priyanka shinde vaibhav 这样的名字会怎样呢?
  • 它会崩溃,这个解决方案只适用于完全相同的输入,如果有更多元素它不起作用。您可以尝试测试 for 循环中的 fields[i] 是否为整数,您知道 ID 和 Age 之间是名称。
  • 它对我没有多大帮助,我尝试了也许正则表达式会帮助我获得名字
  • 我编辑了我的答案,我认为这适用于字数不同的名称
猜你喜欢
  • 2022-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2011-06-04
相关资源
最近更新 更多