无法相应地拆分字符串
本文关键字:拆分 字符串 | 更新日期: 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
- 获取
LastIndexOf(';')
- 根据
index
拆分string
。这将为您提供string
和int
部分 - 拆分
string
零件并进行处理 - 处理
int
部分
方法2
- 在
;
上拆分字符串 - 运行
for
循环-for (int i = 0; i < str.length - 2; i++)
-这是string
部分 - 单独处理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);