如何在给定字符串中获取非数字字符的ASCII值

4

我将会有以下这个字符串

String S="AB-1233-444";

我希望将这个中的AB分开,并找出这两个字母的ASCII码。

5个回答

1

你应该能够使用LINQ来处理这个问题(现在正在测试语法):

var asciiCodes = S.Where(c => char.IsLetter(c)).Select(c => (int)c);

或者如果您不想使用 LINQ 版本:

var characterCodes = new List<int>();

foreach(var c in S)
{
    if(char.IsLetter(c))
    {
        characterCodes.Add((int)c);
    }
}

我会使用 where !char.IsNumber(c),但是 LINQ 也是一个好的答案。 - Kell
@Kell - !char.IsNumber(c) 仍将返回标点符号(短划线),而原帖中明确指出他不想要这些。不过我忘记了 char.IsLetter(),它可以完全满足他们的需求。 - Justin Niessner
我认为他想要非数字字符,因为有两个额外的非数字字符。在这种情况下,我会使用 where Char.IsLetter(c)。 - Kell

0

如果你知道字符串是以 - 分隔的,可以使用 string.Split 进行分割。

要获取字符 'A' 的 ASCII 表示,可以使用以下代码:

int asciivalue = (int)'A';

完整的示例可能是:

Dictionary<char,int> asciilist = new Dictionary<char,int>();
string s = "AB-1233-444";
string[] splitstrings = s.Split('-');
foreach( char c in splitstrings[0]){
  asciilist.Add( c, (int)c );
}

这里的 asciilist 是什么意思? - Seshireddy Reddy
也许不是一个好的名称,但我不知道 OP 想要用这个列表做什么,所以我只是把它存储在某个地方,而不对其进行任何逻辑处理。它是一个包含 char 和其关联 ascii 值的字典,但正如你可能明白的那样,除了示例效果本身外,它几乎没有用处。 - Øyvind Bråthen

0
  var result = (from c in S.ToCharArray() where
   ((int)c >= (int)'a' &&
   (int)c <= (int)'z') || 
   ((int)c >= (int)'A' && 
   (int)c <= (int)'Z') select c).ToArray();

非Linq版本如下:

List<char> result = new List<char>();
foreach(char c in S)
{
  if(((int)c >= (int)'a' &&
     (int)c <= (int)'z') || 
     ((int)c >= (int)'A' && 
     (int)c <= (int)'Z'))
      {
        result.Add(c);
      }
 }

我可以有非LINQ版本的吗? - Seshireddy Reddy
查找非 Linq 版本,请查看更新版本 :) - Katalonis

0
你可以使用以下代码将字符转换为码点:(int)'a'

0
你可以使用子字符串来仅获取字母,然后使用 for 循环将字母的值存储在数组中并逐个打印。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接