Tag: string

如何检查两个字符串是否在C#中是部分匹配?

可能重复: 是否有为C#编写的模糊搜索或字符串相似性函数库? 我正在创建一个应用程序,除了用户输入歌曲或艺术家或专辑名称之外,然后将通过字符串数组或ArrayList查找任何可能的匹配。 将根据匹配百分比计算自动建议。 例如 如果用户键入链接prk,它应该找到Linkin Park或Link 80或Link Wray但匹配百分比将对所有人不同 假设该集合仅搜索艺术家集合中的艺术家姓名和歌曲集合中的歌曲名称。 (百分比数字仅供参考) Linkin Park – 98% Link Wray -82% Link 80 – 62% 解决方案不一定是C#代码,任何正则表达式或伪代码都会很好,但应该可以在C#中实现。

为什么.NET会创建新的子字符串而不是指向现有的字符串?

从使用Reflector的简短外观看,它看起来像String.Substring()为每个子字符串分配内存。 我是否纠正这种情况? 我认为没有必要,因为字符串是不可变的。 我的基本目标是创建一个IEnumerable Split(this String, Char)扩展方法,该方法不分配额外的内存。

如何在保留行结尾的同时拆分字符串?

我有一个文本块,我希望得到它的行而不会丢失最后的\ r和\ n。 现在,我有以下(次优代码): string[] lines = tbIn.Text.Split(‘\n’) .Select(t => t.Replace(“\r”, “\r\n”)).ToArray(); 所以我想知道 – 有更好的方法吗? 接受的答案 string[] lines = Regex.Split(tbIn.Text, @”(?<=\r\n)(?!$)");

C# – 子字符串:索引和长度必须引用字符串中的位置

我有一个看起来像的字符串 string url = “www.example.com/aaa/bbb.jpg”; “www.example.com/”长度固定为18。 我想从这个字符串中获取“aaa / bbb”部分(实际的url不是示例,也不是aaa / bbb,长度可能会有所不同) 所以这就是我的所作所为: string newString = url.Substring(18, url.Length – 4); 然后我得到了exception:索引和长度必须引用字符串中的位置。 我的代码有什么问题以及如何修复它? 提前致谢。

在C#中的ListBox中添加ListBoxItem?

我知道: String test = “test”; ListBox.Items.Add(test); 要么 String test = “test”; int index = 1; ListBox.Items.Insert(index, String); 在ListBox中添加String,但我想插入ListBoxItem,如何? 以前我学到了 var contentToString = (String)ListBoxItem.Content; 只是将ListBoxItem转换为String,但我无法将String转换为ListBoxItem

屏蔽除字符串的前6位和后4位以外的所有数字(长度各不相同)

我有一个卡号作为字符串,例如: string ClsCommon.str_CardNumbe r = “3456123434561234”; 此卡号的长度可以在16到19位之间变化,具体取决于要求。 我的要求是我必须显示卡号的前六位和后四位,并用字符“X”掩盖其中的其他字符。 我尝试过使用subString并分别为16,17,18,19位数实现它。 我将字符串(ClsCommon.str_CardNumber)拆分为5个字符串(str_cardNum1,str_cardNum2,str_cardNum3,str_cardNum4,str_cardNum5 – 每个字符串4位数。第5个字符串的剩余数字) 所有字符串都放在ClsCommon文件中。 基于此我实现了以下,它完美地工作: if (ClsCommon.str_CardNumber.Length == 16) { txtmskcrdnum.Text = string.Concat(ClsCommon.str_cardNum1, ” “, ClsCommon.str_cardNum2.Substring(0, 2), “XX”, ” “, “XXXX”, ” “, ClsCommon.str_cardNum4); } if (ClsCommon.str_CardNumber.Length == 17) { txtmskcrdnum.Text = string.Concat(ClsCommon.str_cardNum1, ” “, ClsCommon.str_cardNum2.Substring(0, 2), “XX”, ” “, “XXXX”, ” “, “X”, ClsCommon.str_cardNum4.Substring(1, 3), […]

如何在控制台应用程序中“键入”文本?

就像计算机在战争游戏中的表现一样 。 我已经开始了,但我不知道从哪里开始。 static void TypeLine(string line) { string output = null; char[] characters = line.ToCharArray(); for (int i = 0; i < characters.Length; i++) { output += characters[i]; Console.Clear(); } Console.WriteLine(output); } 我的想法是拆分你想要它输出的字符串,添加一个字符,清除控制台,添加另一个,等等。 我到目前为止,但我真的不知道如何添加,然后清除,然后再添加。 如果您愿意,一些提示会很好,甚至是完整的代码。

.net中的转换:本机Utf-8 托管字符串

我创建了这两个方法来将Native utf-8字符串(char *)转换为托管字符串,反之亦然。 以下代码完成了这项工作: public IntPtr NativeUtf8FromString(string managedString) { byte[] buffer = Encoding.UTF8.GetBytes(managedString); // not null terminated Array.Resize(ref buffer, buffer.Length + 1); buffer[buffer.Length – 1] = 0; // terminating 0 IntPtr nativeUtf8 = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, nativeUtf8, buffer.Length); return nativeUtf8; } string StringFromNativeUtf8(IntPtr nativeUtf8) { int size = 0; byte[] buffer = {}; do { […]

在.Net中获取子字符串时,新字符串是否引用相同的原始字符串数据或数据是否被复制?

假设我有以下字符串: string str1 = “Hello World!”; string str2 = str1.SubString(6, 5); // “World” 我希望在上面的例子中str2不会复制“World”,但只是最终成为一个新的字符串,它指向相同的内存空间,只是它以6的偏移量和5的长度开始。 实际上我正在处理一些可能非常长的字符串,并且由于性能原因我对它在幕后的工作方式感兴趣。 我不熟悉IL调查此事。

c#从字符串中的键值对中提取值

我有一个像这样的字符串: blablablamorecontentblablabla?name=michel&score=5&age=28&iliedabouttheage=true 看起来像常规查询字符串是,但我不在任何Web上下文中 现在我想通过他们的键提取值(在=符号之后),例如,名称(michel),分数(5),年龄(28)等。 通常我解析字符串就像获取单词’name’的字符串中的位置,然后将5添加到它(长度’name =’)并将此位置命名为’start’然后搜索&-sign并命名该位置’结束’,然后获取位置开始和结束之间的字符串。 但是必须有一个更好的解决方案,这是一个正则表达式吗?