C# 如何将一个字符串分隔为多个字符串
如何使用C#将“ThisIsMyTestString”转换为“ThisIsMyTestString” 有没有快速的方法 我一直在想一个伪代码,但它既复杂又难看:C# 如何将一个字符串分隔为多个字符串,c#,string,C#,String,如何使用C#将“ThisIsMyTestString”转换为“ThisIsMyTestString” 有没有快速的方法 我一直在想一个伪代码,但它既复杂又难看: String s = "ThisIsMyTestString"; List<String> strList = new List<String>(); for(int i=0; i < str->Length ; i++) { String tmp = ""; if (Char.IsUp
String s = "ThisIsMyTestString";
List<String> strList = new List<String>();
for(int i=0; i < str->Length ; i++)
{
String tmp = "";
if (Char.IsUpper(str[i]))
{
tmp += str[i];
i++;
}
while (Char::IsLower(str[i]))
{
tmp += str[i];
i++;
}
strList .Add(tmp);
}
String tmp2 = "";
for (uint i=0 ; i<strList.Count(); i++)
{
tmp2 += strList[i] + " ";
}
String s=“thismyteststring”;
List strList=新列表();
对于(int i=0;iLength;i++)
{
字符串tmp=“”;
if(Char.IsUpper(str[i]))
{
tmp+=str[i];
i++;
}
while(Char::IsLower(str[i]))
{
tmp+=str[i];
i++;
}
strList.Add(tmp);
}
字符串tmp2=“”;
对于(uint i=0;i您可以使用正则表达式,如下所述:
您的正则表达式:“(?不是最好的代码,但它可以工作
String.Join("", s.Select(c => Char.IsUpper(c) ? " " + c : c.ToString())).Trim()
lazyberezovsky用一个简单得多的解决方案打败了我……但这会产生更少的垃圾,所以我不会删除它
static void Main(string[] args)
{
Console.WriteLine(SplitByCase("ThisIsMyString"));
Console.ReadLine();
}
static string SplitByCase(string str, bool upper = true)
{
return String.Join(" ", SplitIntoWords(str, c => Char.IsUpper(c)));
}
static IEnumerable<String> SplitIntoWords(string str, Func<char, bool> splitter)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
sb.Append(str[i]);
if (i + 1 == str.Length || splitter(str[i + 1]))
{
yield return sb.ToString();
sb.Clear();
}
}
}
static void Main(字符串[]args)
{
Console.WriteLine(SplitByCase(“ThisIsMyString”);
Console.ReadLine();
}
静态字符串拆分按大小写(字符串str,bool upper=true)
{
返回String.Join(“,splitintoords(str,c=>Char.IsUpper(c));
}
静态IEnumerable拆分为字(字符串str、函数拆分器)
{
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
这将对该字符串执行此操作:
String s = "ThisIsMyTestString";
StringBuilder result = new StringBuilder();
result.Append(s[0]);
for (int i = 1; i < s.Length; i++)
{
if (char.IsUpper(s[i]) )
result.Append(' ');
result.Append(s[i]);
}
s = result.ToString();
String s=“thismyteststring”;
StringBuilder结果=新建StringBuilder();
结果.追加(s[0]);
对于(int i=1;i
这里有一个非常相似的问题:就我个人而言,只要你发现一个字符是<97
你写的代码的输出是什么?说“它太难看了,我甚至没有试图修复它”表示你不愿意去调试你自己的代码。我在“这是我的测试字符串”中只看到一个字符串"。您确定要将一个字符串分隔为多个字符串吗?致作者:为什么您认为这种方式很难看?当然,正则表达式有更好的解决方案,但…这也很好。当然,您必须为tmp变量使用StringBuilder,必须编写更漂亮的代码样式长字符串这可能会导致内存spike@StenPetrov完整的ely同意你的观点+1正则表达式在这里是一个很好的解决方案。但是有人能解释一下它的作用吗???正则表达式查找从A到Z的字符,前面是字符A到Z,每个实例都发现它用空格替换实例,后面是字符found请参见答案更新谢谢你,非常有用!
String s = "ThisIsMyTestString";
StringBuilder result = new StringBuilder();
result.Append(s[0]);
for (int i = 1; i < s.Length; i++)
{
if (char.IsUpper(s[i]) )
result.Append(' ');
result.Append(s[i]);
}
s = result.ToString();