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;
    }