输入任意一种物质的化学分子式,要求输出其每种组成元素的数量。
比如
碳酸钙的分子式为 CaCO3,其元素组成分别为 Ca:1,C:1,O:3
乙醇的分子式 C2H5OH,其元素组成分别为 C:2,H:6,O:1
硫酸铁的分子式为 Fe2(SO4)3,其元素组成分别为 Fe:2,S:3,O:12
(注意:元素名称首字母大写,剩余字母都小写;括号括起来表示括号中的结构作为
整体出现多少次)
输入:分子式字符串;比如乙醇和硫酸铁的分子式输入分别为 C2H5OH,Fe2(SO4)3
输出:每种元素数量;比如乙醇和硫酸铁的分子式输入后,输出分别为 C2H6O1 和Fe2S3O1
//返回字符串中存在的指定字符的全部索引
public static int[] CharIndex(string str, string s, string e)
//从一个字符串,获取指定两个不同字符,中间的字符的方法
public static string[] MidChars(string str, string s, string e)
//分析指定字符后面两位字符是否有数字并返回数字
public static int IsNumBehind(string str, string s, string e)
//打印数组中的元素
public static void LogArr(Array ayy)
详细的内部参考方法可以参考方法内部的写法
using System;
using UnityEngine;
using System.Collections.Generic;
public static class StrHelper
{
// 返回字符串中存在的指定字符的全部索引
public static int[] CharIndex(string str,string _char){
int index = 0;
List<int> list = new List<int>();
while((index = str.IndexOf(_char,index))!=-1){
list.Add(index);
index = index + _char.Length;
}
return list.ToArray();
}
// 从一个字符串,获取指定两个不同字符,中间的字符串方法
public static void MidChars(string str,string s,string e){
int[] sIndex = CharIndex(str,s);
int[] eIndex = CharIndex(str,e);
//LogArr(eIndex);
for(int i=0;i<sIndex.Length;i++){
int a = sIndex[i]+s.Length;
int b = eIndex[i]-a;
string temp = str.Substring(a,b);
Debug.Log(temp);
}
}
public static void LogArr(Array arr){
foreach(var a in arr){
Debug.Log(a);
}
}
}