0

我有一个字符串LCD32W58。在这个字符串中,我想要子字符串,直到我得到数字,
例如LCD32W58 --> LCD

如果字符串在开头包含数字,那么我想要数字直到字符开始,
例如55LM9600 --? 55

4

2 回答 2

0

你可以使用这样的东西

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)

你也可以使用numbersnot 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)
于 2012-11-21T07:16:07.853 回答
0

仅当字符串中只有数字和字母时,该方法才有效

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));
}
于 2012-11-21T07:22:08.943 回答