c# - 仅增加字符串字母和数字c#
问题描述
这里问了一个类似的问题:
用字母和数字增加一个字符串,除了它只增加字符串中的数字,我想增加数字和;+-*:=
字母,并且只增加字母和数字,而不是像字符这样的其他任何东西。
例子:
Z006GZYBA1 => Z006GZYBA2
A9 => AA
AZ => B0
1ZZZZZZZZZ => 2000000000
编辑:我尝试过的:
public static string IncrementString(this string input)
{
string rtn = "A";
if (!string.IsNullOrWhiteSpace(input))
{
bool prependNew = false;
var sb = new StringBuilder(input.ToUpper());
for (int i = (sb.Length - 1); i >= 0; i--)
{
if (i == sb.Length - 1)
{
var nextChar = Convert.ToUInt16(sb[i]) + 1;
if (nextChar > 90)
{
sb[i] = 'A';
if ((i - 1) >= 0)
{
sb[i - 1] = (char)(Convert.ToUInt16(sb[i - 1]) + 1);
}
else
{
prependNew = true;
}
}
else
{
sb[i] = (char)(nextChar);
break;
}
}
else
{
if (Convert.ToUInt16(sb[i]) > 90)
{
sb[i] = 'A';
if ((i - 1) >= 0)
{
sb[i - 1] = (char)(Convert.ToUInt16(sb[i - 1]) + 1);
}
else
{
prependNew = true;
}
}
else
{
break;
}
}
}
rtn = sb.ToString();
if (prependNew)
{
rtn = "A" + rtn;
}
}
return rtn.ToUpper();
}
解决方案
这应该可以工作(方法是IncrementBase36()
,但我将它放在控制台应用程序中用于演示目的):
using System;
namespace Demo
{
class Program
{
static void Main()
{
Console.WriteLine(IncrementBase36("Z006GZYBA1"));
Console.WriteLine(IncrementBase36("A9"));
Console.WriteLine(IncrementBase36("AZ"));
Console.WriteLine(IncrementBase36("1ZZZZZZZZZ"));
}
public static string IncrementBase36(string numberBase36)
{
var digits = numberBase36.ToCharArray();
bool carry = true;
for (int i = digits.Length - 1; i >= 0; --i)
{
if (carry)
{
if (digits[i] == 'Z')
{
digits[i] = '0';
}
else
{
if (digits[i] == '9')
digits[i] = 'A';
else
++digits[i];
carry = false;
}
}
}
if (carry)
return '1' + new string(digits);
else
return new string(digits);
}
}
}
推荐阅读
- python - 使用 matplotlib 显示所有图像
- drupal - 将视图上下文过滤器设置为 request_path()
- node.js - 如何在mongodb查询中使用变量作为字段值?
- nextcloud - Onlyoffice Nextcloud 连接器无法获取文件:HTTP 403 访问被拒绝
- ionic-framework - 自定义离子可搜索组件
- flask - 如何在 Sentry 中忽略烧瓶 http 400 异常
- sql - 使用 REGEXP 将数据库中的 Urls (iframe) 更新到新路径
- angular - Angular Material的matTooltip在重定向到另一个页面后没有消失
- api - shopware REST API 订单列表
- ios - 如何在Swift中使tableview的标题视图可点击