我有一个字符串LCD32W58
。在这个字符串中,我想要子字符串,直到我得到数字,
例如LCD32W58 --> LCD
如果字符串在开头包含数字,那么我想要数字直到字符开始,
例如55LM9600 --? 55
我有一个字符串LCD32W58
。在这个字符串中,我想要子字符串,直到我得到数字,
例如LCD32W58 --> LCD
如果字符串在开头包含数字,那么我想要数字直到字符开始,
例如55LM9600 --? 55
你可以使用这样的东西
if @nString like '[0-9]%'
select @Result = left(@nString, patindex('%[A-Za-z]%', @nString) - 1)
else if @nString like '[A-Za-z]%'
select @Result = left(@nString, patindex('%[0-9]%', @nString) - 1)
你也可以使用numbers
和not numbers
风格
if @nString like '[0-9]%'
select @Result = left(@nString, patindex('%[^0-9]%', @nString) - 1)
else
select @Result = left(@nString, patindex('%[0-9]%', @nString) - 1)
仅当字符串中只有数字和字母时,该方法才有效
private string ParseString(string s)
{
int i = 0;
int j = 0;
foreach (char c in s)
{
if (isAlphanummeric(c)
{
if (j > 0)
break;
i++;
}
else if(isNummeric(c)
{
if (i > 0)
break;
j++;
}
else
{
throw new NotSupportedException(
"Only letters and numbers are expected.");
}
}
return (s.Substring(0, (i > 0 ? i: j)));
}
private bool isAlphanummeric(Char decValue)
{
return ((decValue > 64) && (decValue < 91)) ||
((decValue > 98) && (decValue < 123));
}
private bool isNummeric(Char decValue)
{
return ((decValue > 47) && (decValue < 58));
}