基于Android平台的内河码头集装箱作业系统的设计与实现外文翻译资料

 2022-10-29 21:58:41

英语原文共 48 页,剩余内容已隐藏,支付完成后下载完整资料


第12章:使用文本

在本章中,我将介绍使用单个字符和字符串的机制Microsoft .NET Framework。 我将首先谈谈System.Char的结构和各种方式可以操纵一个角色。 然后我会去更有用的System.String类,它允许您使用不可变字符串。 (一旦创建,不可变的字符串不能以任何方式修改。)检查字符串后,我会告诉你如何通过System.Text.- StringBuilder类来动态地执行各种操作以构建字符串。 以字符串为基础的方法,我将描述如何格式化对象变成字符串,以及如何使用各种编码有效地保持或传输字符串。

字符

在.NET Framework中,字符始终以16位Unicode代码值表示,缓解全球应用的发展。 一个字符用一个实例表示的System.Char结构(值类型)。 System.Char类型很简单。它提供两个公共只读常量字段:MinValue,定义为0x0000,MaxValue,定义为0xFFFF。

给定一个Char的实例,您可以调用静态GetUnicodeCategory方法返回System.Globalization.UnicodeCategory枚举类型的值。该值表示字符是否是控制字符,货币符号,a小写字母,大写字母,标点符号,数学符号等(as由Unicode 3.0标准定义)。 为了缓解开发,Char类型还提供了几种静态方法,如IsDigit,IsLetter,IsWhiteSpace,IsUpper,IsLower,IsPunctuation,IsLetter-OrDigit,IsControl,IsNumber,IsSeparator,IsSurrogate和IsSymbol。 所有这些方法在内部调用GetUnicodeCategory并简单地返回true或false。 请注意,所有这些方法都采用单个字符对于一个参数或一个String,并且String中的一个字符的索引作为参数。

此外,您可以将单个字符转换为小写或大写等价物调用静态ToLower或ToUpper方法。调用这些方法之一转换使用与调用线程相关联的文化信息的字符(其中方法通过查询System.Threading.Thread的静态内部获得CurrentCulture属性);或者您可以通过传递实例来指定特定文化一个System.Globalization.- CultureInfo类到这些方法。 ToLower和ToUpper需要文化信息,因为信箱是文化依赖的操作。例如,土耳其人认为U 0069(拉丁小号I)的大写字母U 0130(拉丁资本信我有一个以上),而其他文化考虑结果为U 0049(LATIN CAPITAL LETTER I)。

除了这些静态方法之外,Char类型还提供了一些实例方法拥有。如果两个Char实例表示相同的16位,Equals方法将返回trueUnicode代码点。 CompareTo方法(由IComparable接口定义)返回两个代码点的比较;这种比较不是文化敏感的。第十五章解释了IComparable接口及其CompareTo方法的工作原理。该方法返回一个由单个字符组成的ToString字符串。与ToString相反解析,它需要一个单字符的字符串并返回字符。

最后一个方法GetNumericValue返回一个字符的数字等价物。以下代码演示:

using System;

class App {

static void Main() {

Double d;

// rsquo;u0033rsquo; is the 'digit 3'

d = Char.GetNumericValue(lsquo;u0033rsquo;); // rsquo;3rsquo; would work too

Console.WriteLine(d.ToString()); // Displays '3'

// rsquo;u00bcrsquo; is the 'vulgar fraction one quarter (lsquo;ugrave;rsquo;)'

d = Char.GetNumericValue(lsquo;u00bcrsquo;);

Console.WriteLine(d.ToString()); // Displays '0.25'

// rsquo;Arsquo; is the 'Latin capital letter A'

d = Char.GetNumericValue(lsquo;Arsquo;);

Console.WriteLine(d.ToString()); // Displays '-1'

}

}

最后,三种技术允许您将各种数字类型转换为Char实例,反之亦然。 这些技术以优先顺序列出:

铸造:将Char转换为数字值(如Int32)的最简单的方法是简单地通过铸造。在三种技术中,这是最有效的,因为编译器发出中间语言(IL)指令来进行转换和否必须调用方法。另外,一些语言(如C#)允许你指示转换是否应使用已检查或未经检查的代码进行(在第5章讨论)。这可以让你决定是否要一个转换值时抛出的System.OverflowException导致数据丢失。这种技术的唯一缺点是您的编译器必须处理所需的数字类型为原始。因此,在Visual Basic中,例如,您不能使用此技术将Char转换为UInt16(反之亦然),因为Visual Basic不考虑UInt16是一个原始类型。

使用转换类型: System.Convert类型提供了几种静态方法知道如何将Char转换为数字类型,反之亦然。所有这些方法执行转换为检查操作,导致溢出异常,如果转换导致数据丢失,将被抛出。

使用IConvertible接口:Char类型和所有数值类型.NET Framework类库(FCL)实现IConvertible接口。这个界面定义了ToUInt16和ToChar等方法。这种技术执行最不利于三者,因为在值类型上调用接口方法要求实例被装箱 - Char,所有数值类型都是值类型。如果类型无法转换,IConvertible的方法会抛出异常(如将Char转换为布尔值)或转换导致数据丢失。注意许多类型(包括FCL的Char和数字类型)实现IConvertible的方法作为显式接口成员实现(在第15章中描述)。这个意味着您必须在实例之前将实例转换为IConvertible可以调用任何界面的方法。

以下代码演示了如何使用这三种技术

using System;

class App {

static void Main() {

Char c;

Int32 n;

// Convert number lt;-gt; character using C# casting

c = (Char) 65;

Console.WriteLine(c); // Displays 'A'

n = (Int32) c;

Console.WriteLine(n); // Displays '65'

c = unchecked((Char) (65536 65));

Console.WriteLine(c); // Displays 'A'

// Convert number lt;-gt; character using Convert

c = Convert.ToChar(65);

Console.WriteLine(c); // Displays 'A'

n = Convert.ToInt32(c);

Console.WriteLine(n); // Displays '65'

// This demonstrates Convertrsquo;s range checking

try {

c = Convert.ToChar(70000); ts // Too big for 16 bi

Console.WriteLine(c); // Doesnrsquo;t execute

}c

atch (OverflowException) {

Console.WriteLine('Canrsquo;t convert 70000 to a Char.');

}

// Convert number lt;-gt; character using IConvertible

c = ((IConvertible) 65).ToChar(null);

Console.WriteLine(c); // Displays 'A'

n = ((IConvertible) c).ToInt32(null);

Console.WriteLine(n); // Displays '65'

}

}

System.String类型

当然,任何应用程序中最常用的类型之一是System.String。 字符串表示不可变的有序字符集。 字符串类型立即派生从Object,使其成为参考类型。 (没有字符串生活在线程的堆栈上)String类型还实现了几个接口(IComparable,ICloneable,IConvertible和IEnumerable)。

构造字符串

许多编程语言(包括C#)认为String是一个原始类型是,编译器可以直接在其源代码中表达文字字符串。 编译器将这些文字字符串放在模块的元数据中,并在运行时访问它们使用一个称为字符串实习的机制(我将在本章稍后讨论)。

在C#中,不能使用new运算符来构造一个String对象:

using System;

class App {

static void Main() {

String s = new String('Hi there.'); // lt;— Error

}

}

Instead, you must use the following special and simplified syntax:

using System;

class App {

static void Main() {

String s = 'Hi there.';

}

}

If you were to compile this code and examine its IL (using ILDasm.exe), yoursquo;d see the

following:

.method private hidebysig static void Main() cil managed

{

.entrypoint

// Code size 7 (0x7)

.maxstack 1

.locals (string V_0)

IL_0000: ldstr 'Hi there.'

IL_0005: stloc.0

IL_0006: ret

} // end of method App::Main

构造对象的新实例的IL指令是newobj。 但是, newobj指令不能出现在IL代码示例中。 相反,您将看到使用从中获取的文字字符串构造ldstr String对象的特殊(加载字符串)IL指令元数据。 这表明CLR实际上有一种特殊的构建方式字符串对象。

包含在元数据中。 要实现这一点,您将使用C#的新操作符并调用其中之一,由String类型提供的构造函数。 使用Char *或SByte *参数的构造函数被设计为可以使用C 与Managed编写的代码进行调用扩展。 这些构造函数创建一个String对象,从数组初始化字符串的Char实例或带符号的字节。 其他构造函数没有任何指针参数,可以从任何托管编程语言调用。

特殊字符,如新行,回车符和后台,C#使用C / C 开发人员熟悉的逃生机制:

// String containing carriage-return and newline characters

String s = 'Hi there.';

重要

虽然前面的例子是硬编码回车和换行符为字符串,我不推荐这样做。相反,System.Environment类型定义只读NewLine属性返回一个由这些字符组成的字符串

当您的应用程序在Windows上运行时。 但是,NewLine属性是平台敏感的,它返回相应的字符串需要通过底层平台获取换行符。 因此对于

例如,如果公共语言运行时(CLR)被移植到UNIX系统,NewLine属性将返回一个仅由a组成的字符串单字符“ n”。 这是定义上一个的正确方法字符串,使其在任何平台上正常工作:

String s = 'Hi' Environment.NewLine 'there.';

您可以使用C#的 操作符连接几个字符串以形成单个字符串,如下所示:

//Three literal strings concatenated to form a single literal string

String s = 'Hi' ' ' 'there.';

在这段代码中,因为所有的字符串都是文字字符串,所以编译器将它们连接在一起,编译时间,最后只放置一个字符串,“你好,”,在模块的元数据中。在非标准字符串上使用

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[137424],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。