String类的属性
C#中自带了一些属性,如字符串的长度,在一个类中,包含有方法和属性,方法用来执行动作,属性用来保存数据 属性是一个封装结构 对外开放
Chars 在当前的String对象中获取Char对象的指定位置
Length 在当前的String对象中获取字符数
创建String类对象 下面是测试代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_1 : MonoBehaviour
{
void Start()
{
//字符串,字符串连接
string fname, lname;
fname = "张";
lname = "三";
string fullname = fname + lname;
Debug.Log("名字: "+ fullname);
//通过使用 string 构造函数
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
string greetings = new string(letters);
Debug.Log("使用string构造函数: " + greetings);
//方法返回字符串
string[] sarray = { "h", "e", "l", "l", "o" };
string message = string.Join("", sarray);
Debug.Log("使用Join方法: "+ message);
//用于转化值的格式化方法
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = string.Format("当前时间: {0:t} on {0:D}", waiting);
Debug.Log("使用Format方法: " + chat);
}
}
比较字符串是指按照字典排序规则,判定两个字符的相对大小,按照字典规则,在一本英文字典中,出现在前面的单词小于出现在后面的单词
测试代码如下
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_2 : MonoBehaviour
{
void Start()
{
string str1 = "Hello";
string str2 = "hello";
//Equals方法比较str1和str2
Debug.Log("Equals方法:"+str1.Equals(str2));
Debug.Log("Equals方法(另一种写法):" + string.Equals(str1, str2));
//Compare方法比较str1和str2
Debug.Log("Compare方法(不区分大小写):" + string.Compare(str1, str2));
Debug.Log("Compare方法(区分大小写):" + string.Compare(str1, str2, true));
Debug.Log("Compare方法(设置索引,比较长度,不区分大小写):" + string.Compare(str1, 0, str2, 0, 7));
Debug.Log("Compare方法(设置索引,比较长度,区分大小写):" + string.Compare(str1, 0, str2, 0, 7, true));
}
}
定位字符串是指在一个字符串中寻找其中包含的子字符串或者字符 常用方法如下
StartsWith/EndsWith方法
IndexOf/LastIndexOf方法
根据英文名可以看出含义 不再赘述
测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_3 : MonoBehaviour
{
void Start()
{
string str1 = "HelloWorld";
//StartsWith和EndsWith方法
//返回一个Boolean值,确定此字符串实例的开始/结尾是否与指定的字符串匹配。
Debug.Log("StartsWith方法:" + str1.StartsWith("He"));
Debug.Log("EndsWith方法:" + str1.EndsWith("He"));
//IndexOf方法
//返回指定字符或字符串在此实例中指定范围内的第一个匹配项的索引。
Debug.Log("IndexOf方法(直接搜索):" + str1.IndexOf("H"));
Debug.Log("IndexOf方法(限定开始查找的位置):" + str1.IndexOf("H", 0));
Debug.Log("IndexOf方法(限定开始查找的位置,以及查找结束的位置):" + str1.IndexOf("H", 0, 5));
//LastIndexOf方法
//从后往前找,返回指定字符或字符串在此实例中指定范围内的第一个匹配项的索引。
Debug.Log("LastIndexOf方法(直接搜索):" + str1.LastIndexOf("H"));
Debug.Log("LastIndexOf方法(限定开始查找的位置):" + str1.LastIndexOf("H", 0));
Debug.Log("LastIndexOf方法(限定开始查找的位置,以及查找结束的位置):" + str1.LastIndexOf("H", str1.Length, 5));
//IndexOfAny方法
//从字符串str1第一个字符开始(0号索引)和字符数组testArr中的元素进行匹配,匹配到了则返回当前索引
char[] testArr = { 'H', 'W' };
Debug.Log("IndexOfAny方法(直接搜索):" + str1.IndexOfAny(testArr));
Debug.Log("IndexOfAny方法(限定开始查找的位置):" + str1.IndexOfAny(testArr, 0));
Debug.Log("IndexOfAny方法(限定开始查找的位置,以及查找结束的位置):" + str1.IndexOfAny(testArr, 0, 5));
//LastIndexOfAny方法
//从后往前找,从字符串str1和字符数组testArr中的元素进行匹配,匹配到了则返回当前索引
Debug.Log("LastIndexOfAny方法(直接搜索):" + str1.LastIndexOfAny(testArr));
Debug.Log("LastIndexOfAny方法(限定开始查找的位置):" + str1.LastIndexOfAny(testArr, 0));
Debug.Log("LastIndexOfAny方法(限定开始查找的位置,以及查找结束的位置):" + str1.LastIndexOfAny(testArr, str1.Length-1, 5));
}
}
Format方法主要用于将指定的字符串格式化为多种形式,例如可以将字符串转化为十六进制,十进制,保留小数点后几位等等
测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_4 : MonoBehaviour
{
void Start()
{
string str1 = string.Format("{0:C}", 2);
Debug.Log("格式化为货币格式:"+str1);
str1 = string.Format("{0:D2}", 2);
Debug.Log("格式化为十进制格式(固定二位数):" + str1);
str1 = string.Format("{0:D3}", 2);
Debug.Log("格式化为十进制格式(固定三位数):" + str1);
str1 = string.Format("{0:N1}", 250000);
Debug.Log("格式化为分号隔开数字格式(小数点保留1位):" + str1);
str1 = string.Format("{0:N3}", 250000);
Debug.Log("格式化为分号隔开数字格式(小数点保留3位):" + str1);
str1 = string.Format("{0:P}", 0.24583);
Debug.Log("格式化为百分比格式(默认保留两位小数):" + str1);
str1 = string.Format("{0:P3}", 0.24583);
Debug.Log("格式化为百分比格式(保留三位小数):" + str1);
str1 = string.Format("{0:D}", System.DateTime.Now);
Debug.Log("格式化为日期格式(XX年XX月XX日):" + str1);
str1 = string.Format("{0:F}", System.DateTime.Now);
Debug.Log("格式化为日期格式(XX年XX月XX日 时:分:秒):" + str1);
}
}
Concat方法用于连接两个或多个字符串
join方法利用一个字符数组和一个分隔符字符串构造新的字符串,常用于把多个字符串连接在一起,并用一个特殊的符号分隔开
+连接运算符可以方便的连接多个字符串
测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_5 : MonoBehaviour
{
void Start()
{
string str1 = "Hello";
string str2 = "World";
string newStr;
newStr = string.Concat(str1, str2);
Debug.Log("Concat方法:"+newStr);
newStr = string.Join("^^", str1, str2);
Debug.Log("Join方法:" + newStr);
newStr = str1+str2;
Debug.Log("连接运算符:" + newStr);
}
}
Split方法可以把一个整字符串,按照某个分隔符,分割成一系列的小的字符串
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_6 : MonoBehaviour
{
void Start()
{
string str1 = "Hello^World";
char[] separtor = { '^' };
string[] newStr;
newStr = str1.Split(separtor);
for (int i = 0; i < newStr.Length; i++)
{
Debug.Log("Split方法:" + newStr[i]);
}
}
}
可以用insert方法在任意插入任意字符,也可以在指定位置插入字符
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_7 : MonoBehaviour
{
void Start()
{
string str1 = "HelloWorld";
string newStr = str1.Insert(3, "ABC");
Debug.Log("Insert方法:" + newStr);
}
}
Remove方法从一个字符串的指定位置开始,删除指定数量的字符
Trim方法可以把一个字符串首尾处的一些特殊字符剪切掉
测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_8 : MonoBehaviour
{
void Start()
{
string str1 = "HelloWorld";
Debug.Log("Remove方法:" + str1.Remove(0, 2));
string str2 = " Hello World ";
Debug.Log("Trim方法(去掉前后空格):" + str2.Trim());
Debug.Log("TrimStart方法(去掉字符串前面空格):" + str2.TrimStart());
Debug.Log("TrimEnd方法(去掉字符串后面空格):" + str2.TrimEnd());
}
}
Copy方法可以把一个字符串复制到另一个字符数组中
CopyTo方法可以实现Copy同样的功能,但是功能更为丰富,可以只复制字符串的一部分到一个字符数组中
测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_9 : MonoBehaviour
{
void Start()
{
string str1 = "HelloWorld";
Debug.Log("Copy方法:" + string.Copy(str1));
char[] newChar = new char[3];
str1.CopyTo(0, newChar, 0, 3);
for (int i = 0; i < newChar.Length; i++)
{
Debug.Log("CopyTo方法:" + newChar[i]);
}
}
}
要替换一个字符串中的某些特定字符或者某个子字符串,可以使用Replace方法实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_10 : MonoBehaviour
{
void Start()
{
string str1 = "HelloWorld";
Debug.Log(str1);
Debug.Log("Replace方法(o->z):" + str1.Replace('o','z'));
Debug.Log("Replace方法(World->Hello):" + str1.Replace("World", "Hello"));
}
}
String类提供了方便转换字符串中所有字符大小写的方法分别是ToUpper和ToLower
测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_10_11 : MonoBehaviour
{
void Start()
{
string str1 = "HelloWorld";
Debug.Log(str1);
Debug.Log("ToLower方法(转小写):" + str1.ToLower());
Debug.Log("ToUpper方法(转大写):" + str1.ToUpper());
}
}
创作不易 觉得有帮助请点赞关注收藏~~~
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我有一大串格式化数据(例如JSON),我想使用Psychinruby同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解
在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg