C# 如何在符号后转换为驼峰大小写?
请尝试以下内容:C# 如何在符号后转换为驼峰大小写?,c#,C#,请尝试以下内容: using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string inputText = "profile.Business.AddressLine1"; //pr
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string inputText = "profile.Business.AddressLine1"; //profile.business.addressLine1
//string inputText = "MyName"; //myName
string result = null;
if (inputText.Contains('.'))
{
//make first character lowercase
result = inputText.Substring(0, 1).ToLower() + inputText.Substring(1);
//Loop to find period symbol
//make the next character after the period symbol lowercase
}
else
{
//make first character lowercase
result = inputText.Substring(0, 1).ToLower() + inputText.Substring(1);
}
}
}
}
解决问题的步骤:
拆分输入的字符串李>
将每个单词的第一个字母改为小写,并连接字符串的其余部分
再次使用
投入:
var input = "profile.Business.AddressLine1";
var result = string.Join(".",
input.Split('.')
.Select(x => string.IsNullOrEmpty(x)
? "" : Char.ToLower(x.First()) + x.Substring(1)));
输出:
var input = "profile.Business.AddressLine1";
var test = "Test..Test";
我建议使用正则表达式:
代码:
profile.business.addressLine1
test..test
using System.Linq; // For test only
using System.Text.RegularExpressions;
...
Func<string, string> toCamel = (source) =>
Regex.Replace(source, @"\b\p{Lu}", m => m.Value.ToLower());
string[] tests = new string[] {
@"profile.Business.AddressLine1",
@"MyFunction(Value, SomeId);",
};
string report = string.Join(Environment.NewLine, tests
.Select(test => $"{test,-40} => {toCamel(test)}"));
Console.WriteLine(report);
如果只想在
之后转换,只需将模式更改为
profile.Business.AddressLine1 => profile.business.addressLine1
MyFunction(Value, SomeId); => myFunction(value, someId);
您可以尝试以下代码:
@"\.\p{Lu}"
static void Main(字符串[]args)
{
字符串inputText=“profile.Business.AddressLine1”;
convertToCamelCase(inputText);//profile.business.addressLine1
}
静态字符串convertToCamelCase(字符串输入文本)
{
字符串结果=string.Empty;
if(inputText.Contains('.'))
{
变量输入=inputText.Split('.');
for(int i=0;i
您应该使用以下代码:
static void Main(string[] args)
{
string inputText = "profile.Business.AddressLine1";
convertToCamelCase(inputText); //profile.business.addressLine1
}
static string convertToCamelCase(string inputText)
{
string result = string.Empty;
if (inputText.Contains('.'))
{
var inputs = inputText.Split('.');
for (int i = 0; i < inputs.Length; i++)
{
inputs[i] = inputs[i].Substring(0, 1).ToLower() + inputs[i].Substring(1);
}
result = string.Join(".", inputs);
}
else
{
result = convertToCamelCase(inputText);
}
return result;
}
静态字符串convertToCamelCase(字符串输入文本)
{
字符串结果=string.Empty;
if(string.IsNullOrEmpty(inputText))返回结果;
变量输入=inputText.Split('.');
for(int i=0;i
您的问题到底是什么?对于portfellimit1
,应该返回什么?警告:出于某种原因,这可能会对具有两个连续点的输入引发异常。这不会编译-请检查您自己添加的比camelCase更有用的点:Test..Test=>Test.Test,但预期是Test。。test@SirRufo,谢谢你的投入,这真的是很有价值的角落案例。我更新了我的答案,以支持您的两个意见,请检查。我使用了三元运算符而不是where子句来避免空字符串问题
static void Main(string[] args)
{
string inputText = "profile.Business.AddressLine1";
convertToCamelCase(inputText); //profile.business.addressLine1
}
static string convertToCamelCase(string inputText)
{
string result = string.Empty;
if (inputText.Contains('.'))
{
var inputs = inputText.Split('.');
for (int i = 0; i < inputs.Length; i++)
{
inputs[i] = inputs[i].Substring(0, 1).ToLower() + inputs[i].Substring(1);
}
result = string.Join(".", inputs);
}
else
{
result = convertToCamelCase(inputText);
}
return result;
}
static string convertToCamelCase(string inputText)
{
string result = string.Empty;
if (string.IsNullOrEmpty(inputText)) return result;
var inputs = inputText.Split('.');
for(int i = 0; i < inputs.Length; i++)
{
if (String.IsNullOrEmpty(inputs[i])) continue;
inputs[i] = inputs[i].Substring(0, 1).ToLower() + inputs[i].Substring(1);
}
result = string.Join(".", inputs);
return result;
}