无法相应地拆分字符串

本文关键字:拆分 字符串 | 更新日期: 2023-09-27 18:23:42

我知道这个问题会被问无数次,但我有点卡住了。我有一根类似的绳子

"Doc1;Doc2;Doc3;12"

它可以是类似的东西

"Doc1;Doc2;Doc3;Doc4;Doc5;56"

它就像是用分号分隔的几段字符串,后面跟着一个数字或id。

我需要分别提取数字/id和字符串。确切地说,我可以有两个字符串:一个有"Doc1;Doc2;Doc3""Doc1;Doc2;Doc3;Doc4",另一个只有数字/id为"12"或"34"或"45"等。是的,我正在使用C#3.5

我理解这是一个非常简单和诙谐的问题,但这家伙被卡住了。需要专家的协助。

问候Anurag

无法相应地拆分字符串

字符串。LastIndexOf和字符串。衬底是你想做什么的关键。

var str = "Doc1;Doc2;Doc3;12";
var ind = str.LastIndexOf(';');
var str1 = str.Substring(0, ind);
var str2 = str.Substring(ind+1);

单向:

string[] tokens = str.Split(';');
var docs = tokens.Where(s => s.StartsWith("Doc", StringComparison.OrdinalIgnoreCase));
var numbers = tokens.Where(s => s.All(Char.IsDigit));
String docs = s.Substring(0, s.LastIndexOf(';'));
String number = s.Substring(s.LastIndexOf(';') + 1);

一种可能的方法是:

var ids = new List<string>();
var nums = new List<string>();
foreach (var s in input.Split(';'))
{
    int val;
    if (!int.TryParse(s, out val)) { ids.Add(s); }
    else { nums.Add(s); }
}

其中CCD_ 3类似于CCD_。现在,ids将容纳所有的类似Doc1的值,而nums将容纳所有类似56的值。

您可以使用StringTokenizer功能。http://www.c-sharpcorner.com/UploadFile/pseabury/JavaLikeStringTokenizer11232005015829AM/JavaLikeStringTokenizer.aspx

使用";"拆分字符串StringTokenizer st=新的StringTokenize(src1,";");

收集最终字符串。那将是你的ID。

您可以尝试以下两个选项之一:(假设您的输入字符串在string str;

方法1

  1. 获取LastIndexOf(';')
  2. 根据index拆分string。这将为您提供stringint部分
  3. 拆分string零件并进行处理
  4. 处理int部分

方法2

  1. ;上拆分字符串
  2. 运行for循环-for (int i = 0; i < str.length - 2; i++)-这是string部分
  3. 单独处理str〔length-1〕-这是int部分

请将此作为一个起点,因为可能有其他方法来实现此的解决方案

string actual = "Doc1;Doc2;Doc3;12";
int lstindex = actual.LastIndexOf(';');
string strvalue = actual.Substring(0, lstindex);
string id = actual.Substring(lstindex + 1);