字符串和ASCII碼的轉(zhuǎn)換 字符串是字符組成的一個序列,而字符底層是一個ASCII碼,所以字符串可以轉(zhuǎn)換成ASCII碼組成的一個序列。用Sys
字符串是字符組成的一個序列,而字符底層是一個ASCII碼,所以字符串可以轉(zhuǎn)換成ASCII碼組成的一個序列。用System.Text.ASCIIEncoding.ASCII.GetBytes(字符串)的方式將字符串轉(zhuǎn)為字節(jié)數(shù)組。
要求:求得0-9 a-z A-Z ASCII碼
示例:
public static void ParseStringToAscII()
{
String s = "09123123asjdhgahsjdgJGJGFJaksjdakshdhkgjgjh";
// 轉(zhuǎn)出成字節(jié)數(shù)組
byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(s);
for (int i = 0; i < bytes.Length; i++)
{
Console.WriteLine(bytes[i]);
}
// 已知一個字節(jié)數(shù)組 如何轉(zhuǎn)回字符串
String reverse = System.Text.Encoding.UTF8.GetString(bytes);
Console.WriteLine(reverse);
}
字符串的格式化
Format 方法
標準的數(shù)學(xué)格式字符串用于返回通常使用的字符串。它們通常象X0這樣的格式。X是格式化標識符,0是精度標識符。格式標識符號共有9種,它們代表了大多數(shù)常用的數(shù)字格式。就像下表所示:
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
綜合示例:
如何將一個復(fù)雜的數(shù)學(xué)表達式解析成 運算符和運算數(shù)
public static int SplitExpression(String expression)
{
// 拆出數(shù)字
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++)
{
// 當(dāng)運算符不為null的時候 運算
if (ops[i] != null)
{
// 判斷是否為加或減
if (ops[i] == "+" || ops[i] == "-")
{
// 找出兩個運算數(shù)
int num1 = int.Parse(nums[i]);
int num2 = int.Parse(nums[i + 1]);
// 計算結(jié)果
int result = Compute(ops[i],num1,num2);
// 結(jié)果放入
nums[i] = result.ToString();
// 移動運算符和運算數(shù)數(shù)組
MoveArrByIndex(ops,i);
MoveArrByIndex(nums, i+1);
// 當(dāng)前位置重新判斷
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++)
{
// 當(dāng)運算符不為null的時候 運算
if (ops[i] != null)
{
// 判斷是否為乘或除
if (op.Contains(ops[i]))
{
// 找出兩個運算數(shù)
int num1 = int.Parse(nums[i]);
int num2 = int.Parse(nums[i + 1]);
// 計算結(jié)果
int result = Compute(ops[i], num1, num2);
// 結(jié)果放入
nums[i] = result.ToString();
// 移動運算符和運算數(shù)數(shù)組
MoveArrByIndex(ops, i);
MoveArrByIndex(nums, i + 1);
// 當(dāng)前位置重新判斷
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入門