String类型的属性和方法(一)

属性:

  字符串String类型的每个实例都有一个length属性,表示字符串中的字符个数。由于字符串是不可变的,所以字符串的长度也不可变。
 
  字符串的length属性不会在for/in循环中枚举,也不能通过delete操作符删除。
 
  注意对于字符串s来说,最后一个字符的索引是s.length - 1。
 

var str = "test";
console.log(str.length);//4
str.length = 6;
console.log(str,str.length);//"test",4

实例方法:

字符串String对象有多达20多个实例方法,包括toString()、toLocaleString()、valueOf()从Object对象继承的3种对象通用方法,chartAt()、中括号[]、charCodeAt()和fromCharCode()4种访问字符方法,concat()和加号+这2种字符串拼接方法,slice()、substr()和substring()3种创建子字符串方法,toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()这4种大小写转换方法,indexOf()和lastIndexOf()这2种查找字符串位置的方法,match()、search()、replace()、split()这4种正则匹配方法以及去除首尾空格的trim()方法和字符串比较的localeCompare()方法.

对象通用方法:

String()是与字符串对应的包装类型,继承了Object对象的通用方法toString(), toLoaleString(),valueOf(),这三个方法。

【toString()】

  toString()方法返回string的原始字符串值

【toLocaleString()】

  toLocaleString()方法返回string的原始字符串值

【valueOf()】

  valueOf()方法返回string的原始字符串值
  

console.log("test".valueOf());//"test"
console.log("test".toString());//"test"
console.log("test".toLocaleString());//"test"

访问字符串方法:

字符串的访问方式有4中charAt(),[],charCodeAt(),fromCharCode()。

1:charAt()

方法值接受一个基于0的字符位置的参数。返回制定位置的字符。当参数为NAN时,默认参数为0,当参数超出范围是,则返回一个空字符串。

var str = "hello";
console.log(str.charAt(1));//e
console.log(str.charAt(-1));//''
console.log(str.charAt(10));//''
console.log(str.charAt());//h 
console.log(str.charAt(NaN));//h

charAt()方法牵扯到Numner的函数的隐试类型的转换,如果转换为数值,则按照上述规则输出字符串,如果转换为NAN,则输出第0个字符。

var str = "hello";
console.log(str.charAt(true));//'e'
console.log(str.charAt(false));//'h'
console.log(str.charAt('abc'));//'h'
console.log(str.charAt({}));//'h'
console.log(str.charAt([2]));//'l'

注意 x.charAt(pos)与x.substring(pos, pos+1)、x.substr(pos,1)、x.slice(pos,pos+1)的结果相等.

var str = "hello";
console.log(str.charAt(1));//'e'
console.log(str.substring(1,2));//'e'
console.log(str.slice(1,2));//'e'
console.log(str.substr(1,1));//'e'

[]中括号方式

  ECMAScript5定义了另一个访问字符的方法,使用方括号加数字索引来访问字符串中的特定字符。如果参数超出范围或是NaN时,则输出undefined;没有参数时,会报错;该方法没有Number()转型函数的隐式类型转换,但参数为单数值数组时可转换为数值。
  

var str = "hello";
console.log(str[0]);//h
console.log(str[[1]]);//e
console.log(str[false]);//undefined
console.log(str[-1]);//undefined
console.log(str[NaN]);//undefined
console.log(str[]);//报错

有文档说IE7-浏览器不支持,未测试。

charCodeAt()

charCodeAt()和charAt(),类似,接受一个基于0的字符参数,但是返回的是制定位置字符16位Unicode编码。返回值是一个16位的整数,在0-65535之间,即在0x0000-0xffff之间。

参数为空或者NAN时,默认参数为0。当参数超出范围时,则返回NAN;

var str = "hello";
console.log(str.charCodeAt());//104
console.log(str.charCodeAt(0));//104
console.log(str.charCodeAt(1));//101
console.log(str.charCodeAt(-1));//NaN
console.log(str.charCodeAt(10));//NaN
console.log(str.charCodeAt(NaN));//104

 同样地,charCodeAt()方法涉及到Number()函数的隐式类型转换,如果转换为数值,则按照上述规则输出相应值;如果转换为NaN,则输出第0个字符的字符编码
 

var str = "hello";
console.log(str.charCodeAt(true));//101
console.log(str.charCodeAt(false));//104
console.log(str.charCodeAt('abc'));//104
console.log(str.charCodeAt({}));//104
console.log(str.charCodeAt([2]));//l08

fromCharCode()

String()构造函数本身有一个静态方法,fromCharCode(),这个方法的作用是就收一个或者是多个字符编码,然后把他们转化成一个字符串。从本质上看的话与实例方法charAt()执行的是相反的操作。若参数为空或者NAN时,则返回空的字符串;若参数超出0-65535的范围,则输出的字符不可控制。

console.log(String.fromCharCode(104,101,108,108,111));//'hello'
console.log(String.fromCharCode());//''
console.log(String.fromCharCode(NaN));//''
console.log(String.fromCharCode(-1));
console.log(String.fromCharCode(65560));

字符串拼接:

concat()

concat()方法将一个或者是多个字符串拼接起来,返回并得到新的字符串,而原字符串不发生变化。若参数(第一个单数除外)不是字符串,则通过String()方式隐式转换字符串,在进行字符串拼接

var stringValue = 'hello ';
var result = stringValue.concat('world','!');
console.log(result);//'hello world!'
console.log(stringValue);//'hello'

第一个参数必须是字符串,如果不是字符串会报错.

(1).concat('2');//报错
(true).concat('false');//报错
({}).concat('abc');//报错

由于数组也存在concat的方法,参数会按照首先出现的参数是数组还是字符串来进行转换

'1,2,3,'.concat([4,5]);//'1,2,3,4,5'
[1,2,3].concat(',4,5');//[1, 2, 3, ",4,5"]

加号运算符(+)

在实际中还是能遇到很多使用+来连接字符串,有时候也比concat方便许多。

var stringValue = 'hello ';
console.log(stringValue.concat('world','!'));//'hello world!'
console.log(stringValue + 'world' + '!');//'hello world!' 

当操作的其中一个字符串,或者是对象转换为字符串时,才进行字符串拼接。

1 + 2;//3
'1' + 2;//'12'
var o = {valueOf:function(){return '1';}};
o + 2;//'12'
var o = {valueOf:function(){return 1;}};
o + 2;//3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,string类型通常用于表示简单的文本信息。导航属性则用于表示对象之间的关系。如果你想为一个对象添加一个string类型的导航属性,可以按照以下步骤进行设置: 1. 首先,在你的类中添加一个string类型属性,例如: ``` public class Person { public int Id { get; set; } public string Name { get; set; } public string Address { get; set; } public string PhoneNumber { get; set; } public string Email { get; set; } } ``` 2. 接下来,在你的类中添加一个引用类型属性,用于表示与另一个对象的关系。例如: ``` public class Order { public int Id { get; set; } public DateTime OrderDate { get; set; } public decimal TotalAmount { get; set; } public string OrderStatus { get; set; } public virtual Person Person { get; set; } } ``` 在这个示例中,我们添加了一个名为“Person”的属性。通过使用“virtual”关键字,我们告诉Entity Framework,这是一个导航属性。 3. 最后,为了建立对象之间的关系,我们可以在Order对象中设置Person属性的值。例如: ``` var person = dbContext.People.FirstOrDefault(p => p.Id == 1); var order = new Order { OrderDate = DateTime.Now, TotalAmount = 100.0M, OrderStatus = "New", Person = person }; dbContext.Orders.Add(order); dbContext.SaveChanges(); ``` 在这个示例中,我们从数据库中获取一个Person对象,并将其设置为Order对象的Person属性的值。然后,我们将Order对象添加到数据库中。 这就是如何设置string类型的导航属性。通过使用这种方法,你可以轻松地建立对象之间的关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值