您现在所在的位置:首页 >学习资源 > Unity游戏/VR/AR入门教材 > VR开发入门教程39:控制台编程--字符串03

VR开发入门教程39:控制台编程--字符串03

来源:奇酷教育 发表于:

  字符串和ASCII码的转换  字符串是字符组成的一个序列,而字符底层是一个ASCII码,所以字符串可以转换成ASCII码组成的一个序列。用Sys

  字符串和ASCII码的转换

  字符串是字符组成的一个序列,而字符底层是一个ASCII码,所以字符串可以转换成ASCII码组成的一个序列。用System.Text.ASCIIEncoding.ASCII.GetBytes(字符串)的方式将字符串转为字节数组。

  要求:求得0-9 a-z A-Z ASCII码

  示例:

  public static void ParseStringToAscII()

  {

  String s = "09123123asjdhgahsjdgJGJGFJaksjdakshdhkgjgjh";

  // 转出成字节数组

  byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(s);

  for (int i = 0; i < bytes.Length; i++)

  {

  Console.WriteLine(bytes[i]);

  }

  // 已知一个字节数组 如何转回字符串

  String reverse = System.Text.Encoding.UTF8.GetString(bytes);

  Console.WriteLine(reverse);

  }

  字符串的格式化

  Format 方法

  标准的数学格式字符串用于返回通常使用的字符串。它们通常象X0这样的格式。X是格式化标识符,0是精度标识符。格式标识符号共有9种,它们代表了大多数常用的数字格式。就像下表所示:

  String.Format("{0}{1}{2}{0}{1}{2}","a","b","c");

  int i = 123456;

  Console.WriteLine("{0:C}", i); // ¥123,456.00

  Console.WriteLine("{0:D}", i); // 123456

  Console.WriteLine("{0:E}", i); // 1.234560E+005

  Console.WriteLine("{0:F}", i); // 123456.00

  Console.WriteLine("{0:G}", i); // 123456

  Console.WriteLine("{0:N}", i); // 123,456.00

  Console.WriteLine("{0:P}", i); // 12,345,600.00 %

  Console.WriteLine("{0:X}", i); // 1E240

  Console.WriteLine("{0:C5}", i); // ¥123,456.00

  Console.WriteLine("{0:D5}", i); // 123456

  Console.WriteLine("{0:E5}", i); // 1.23456E+005

  Console.WriteLine("{0:F5}", i); // 123456.00000

  Console.WriteLine("{0:G5}", i); // 1.23456E5

  Console.WriteLine("{0:N5}", i); // 123,456.00000

  Console.WriteLine("{0:P5}", i); // 12,345,600.00000 %

  Console.WriteLine("{0:X5}", i); // 1E240

  综合示例:

  如何将一个复杂的数学表达式解析成 运算符和运算数

  public static int SplitExpression(String expression)

  {

  // 拆出数字

  String[] nums = expression.Split("+-*/".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);

  // 拆出运算符

  String[] ops = expression.Split("0123456789".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);

  // 如何计算

  // 先乘除

  ComputeByOp(nums,ops,"*/");

  // 后加减

  for (int i = 0; i < ops.Length; i++)

  {

  // 当运算符不为null的时候 运算

  if (ops[i] != null)

  {

  // 判断是否为加或减

  if (ops[i] == "+" || ops[i] == "-")

  {

  // 找出两个运算数

  int num1 = int.Parse(nums[i]);

  int num2 = int.Parse(nums[i + 1]);

  // 计算结果

  int result = Compute(ops[i],num1,num2);

  // 结果放入

  nums[i] = result.ToString();

  // 移动运算符和运算数数组

  MoveArrByIndex(ops,i);

  MoveArrByIndex(nums, i+1);

  // 当前位置重新判断

  i--;

  }

  }

  else

  {

  break;

  }

  }

  return int.Parse(nums[0]);

  }

  public static void ComputeByOp(String[] nums,String[] ops,String op)

  {

  for (int i = 0; i < ops.Length; i++)

  {

  // 当运算符不为null的时候 运算

  if (ops[i] != null)

  {

  // 判断是否为乘或除

  if (op.Contains(ops[i]))

  {

  // 找出两个运算数

  int num1 = int.Parse(nums[i]);

  int num2 = int.Parse(nums[i + 1]);

  // 计算结果

  int result = Compute(ops[i], num1, num2);

  // 结果放入

  nums[i] = result.ToString();

  // 移动运算符和运算数数组

  MoveArrByIndex(ops, i);

  MoveArrByIndex(nums, i + 1);

  // 当前位置重新判断

  i--;

  }

  }

  else

  {

  break;

  }

  }

  }

  public static void MoveArrByIndex(String[] arr,int startIndex)

  {

  // 将移动的位置置为null

  arr[startIndex] = null;

  for (int i = startIndex; i < arr.Length-1; i++)

  {

  if (arr[i+1] != null)

  {

  // 交换

  String temp = arr[i];

  arr[i] = arr[i + 1];

  arr[i + 1] = temp;

  }

  }

  }

  public static int Compute(String op,int num1,int num2)

  {

  switch (op)

  {

  case "+": return num1 + num2;

  case "-": return num1 - num2;

  case "*": return num1 * num2;

  case "/": return num1 / num2;

  default: return 0;

  }

  }

>>>更多Python入门教程:Python入门