C#轉換駝峰格式--首字母大寫,可直接ctrl+v,支持跳過字符串
輸入:2D_3D_23d_IB_REQUEST_OBSTACLES_GET_STATIC_OBJECTS_1_MESSAGE_STRUCT_SIZE_2D
結果:2D3D23dIBRequestObstaclesGetStaticO
環境 VS 2017
鏈接: https://pan.baidu.com/s/1nJ5bxynMhk9re6_8F-eFaA 提取碼: wssy
QQ交流:1023360745

/////Readme
/// <summary>
/// 分隔符
/// </summary>
char charSplit = '_';
//正則表達式在下面 其他格式自己調整一下
private void button1_Click(object sender, EventArgs e)
{
string strConvert = textBox1.Text.Trim();
//循環轉換 並拼裝字符串
string strRes = PieceString(strConvert);
//復制 直接粘貼即可
Clipboard.SetDataObject(strRes);
textBox2.Text = strRes;
//清空輸入方便快速操作
textBox1.Text = string.Empty;
}
/// <summary>
/// 跳過的字符串
/// </summary>
private List<string> listPass = new List<string>();
public void LoadPass()
{
string str = textBox3.Text.Trim();
if (!string.IsNullOrWhiteSpace(str))
{
listPass = str.Split(',').ToList();
}
}
/// <summary>
/// 小寫轉換為駝峰
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private string ConvertString(string tb1)
{
Match mt = Regex.Match(tb1, @"_(\w*)*");
while (mt.Success)
{
var item = mt.Value;
if (!string.IsNullOrWhiteSpace(item))
{
if (listPass.Contains(item.ToLower()))
{
continue;
}
}
while (item.IndexOf('_') >= 0)
{
string newUpper = item.Substring(item.IndexOf(charSplit), 2);
item = item.Replace(newUpper, newUpper.Trim(charSplit).ToUpper());
tb1 = tb1.Replace(newUpper, newUpper.Trim(charSplit).ToUpper());
}
mt = mt.NextMatch();
}
return tb1;
}
/// <summary>
/// 字符拼裝
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string PieceString(string str)
{
StringBuilder strRes = new StringBuilder();
LoadPass();
if (!string.IsNullOrWhiteSpace(str))
{
List<string> strList = str.Split(charSplit).ToList();
foreach (var item in strList)
{
if (listPass.Contains(item))
{
strRes.Append(item);
}
else
{
strRes.Append(ConvertString(charSplit + item.ToLower()));
}
}
}
return strRes.ToString();
}
