字符串和ASCII码的转换 字符串是字符组成的一个序列,而字符底层是一个ASCII码,所以字符串可以转换成ASCII码组成的一个序列。用Sys
字符串是字符组成的一个序列,而字符底层是一个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入门