在c#中拆分特殊字符串
本文关键字:字符串 拆分 | 更新日期: 2023-09-27 18:25:01
我想用给定的输出拆分下面的字符串。有人能帮我做这件事吗。
示例:
- /测试/测试123
输出:/Test/
- /TEST1/测试/测试/测试/
输出:/Test1/
- /文本/12121/1212/
输出:/Text/
- /121212121/asdfasdf/
输出:/12121121/
- 12345
输出:12345
我试过string.split函数,但效果不好。我有什么想法或逻辑可以实现这种情况吗。如果正则表达式中的答案对我来说很好。
您只需要/
Spiting的第一个结果
string output = input.Split('/')[0];
但如果您有//TEST/
,并且输出应该是/TEST
,则可以使用regex。
string output = Regex.Matches(input, @"'/?(.+?)'/")[0].Groups[1].Value;
对于你的第五种情况:你必须把逻辑分开。例如:
public static string Method(string input)
{
var split = input.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
if (split.Length == 0) return input;
return split[0];
}
或者使用regex。
public static string Method(string input)
{
var matches = Regex.Matches(input, @"'/?(.+?)'/");
if (matches.Count == 0) return input;
return matches[0].Groups[1].Value;
}
使用方法的一些结果
TEST/54/ => TEST
TEST => TEST
/TEST/ => TEST
我认为这会起作用:
string s1 = "/TEST/TEST123";
string s2 = "/TEST1/Test/Test/Test/";
string s3 = "/Text/12121/1212/";
string s4 = "/121212121/asdfasdf/";
string s5 = "12345";
string pattern = @"'/?[a-zA-Z0-9]+'/?";
Console.WriteLine(Regex.Matches(s1, pattern)[0]);
Console.WriteLine(Regex.Matches(s2, pattern)[0]);
Console.WriteLine(Regex.Matches(s3, pattern)[0]);
Console.WriteLine(Regex.Matches(s4, pattern)[0]);
Console.WriteLine(Regex.Matches(s5, pattern)[0]);
class Program
{
static void Main(string[] args)
{
string example = "/TEST/TEST123";
var result = GetFirstItem(example);
Console.WriteLine("First in the list : {0}", result);
}
static string GetFirstItem(string value)
{
var collection = value?.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
var result = collection[0];
return result;
}
}
StringSplitOptions.RemoveEmptyEntries
是一个枚举,它告诉Split
函数,当它将字符串拆分为数组时,如果数组中有空字符串元素,则函数不应在结果中包含空元素。基本上,您希望集合只包含值。
public string functionName(string input)
{
if(input.Contains('/'))
{
string SplitStr = input.Split('/')[1];
return "/"+SplitStr .Substring(0, 1) +SplitStr.Substring(1).ToLower()+"/"
}
return input;
}
output = (output.Contains("/"))? '/' +input.Split('/')[1]+'/':input;
private void button1_Click(object sender, EventArgs e)
{
string test = @"/Text/12121/1212/";
int first = test.IndexOf("/");
int last = test.Substring(first+1).IndexOf("/");
string finall = test.Substring(first, last+2);
}
我将此代码与您的所有示例进行了比较,并得到了正确的输出。试试这个。
以下方法可能会对您有所帮助。
public string getValue(string st)
{
if (st.IndexOf('/') == -1)
return st;
return "/" + st.Split('/')[1] + "/";
}