不区分大小写'包含(字符串)'

Bor*_*ens 2785 c# string contains case-insensitive

有没有办法让以下返回true?

string title = "ASTRINGTOTEST";
title.Contains("string");
Run Code Online (Sandbox Code Playgroud)

似乎没有一个过载允许我设置区分大小写.目前我大写它们两个,但这只是愚蠢(我指的是上下套管的i18n问题).

更新
这个问题是古老的,从那时起我就意识到,如果你想完全研究它,我会要求一个简单的答案来解决一个非常庞大和困难的话题.
对于大多数情况,在单语言的英语代码库中,这个答案就足够了.我怀疑是因为大多数人来到这个类别这是最受欢迎的答案.然而,
这个答案提出了一个固有的问题,即我们无法比较文本不区分大小写,直到我们知道两个文本是相同的文化并且我们知道文化是什么.这可能是一个不太受欢迎的答案,但我认为它更正确,这就是为什么我这样标记它.

Jar*_*Par 2618

您可以使用String.IndexOf方法并将其StringComparison.OrdinalIgnoreCase作为要使用的搜索类型传递:

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
Run Code Online (Sandbox Code Playgroud)

更好的是为字符串定义一个新的扩展方法:

public static class StringExtensions
{
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source?.IndexOf(toCheck, comp) >= 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,对于旧版本,C#6.0(VS 2015)可以使用空传播 ?.

if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;
Run Code Online (Sandbox Code Playgroud)

用法:

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

  • @ColonelPanic`ToLower`版本包括2个分配,这些分配在比较/搜索操作中是不必要的.为什么在不需要它的场景中进行不必要的分配? (56认同)
  • 这给出了与`paragraph.ToLower(culture).Contains(word.ToLower(culture))`和`CultureInfo.InvariantCulture`相同的答案,并没有解决任何本地化问题.为什么复杂的事情?http://stackoverflow.com/a/15464440/284795 (8认同)
  • 一句警告:`string.IndexOf(string)`的默认值是使用当前文化,而`string.Contains(string)`的默认值是使用序数比较器.众所周知,前者可以改变选择较长的过载,而后者不能改变.这种不一致的结果是以下代码示例:`Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; string self ="Waldstrasse"; string value ="straße"; Console.WriteLine(self.Contains(value));/*False*/Console.WriteLine(self.IndexOf(value)> = 0);/*True*/` (5认同)
  • @Seabiscuit无效,因为`string`是一个`IEnumerable <char>`因此你不能用它来查找子串 (4认同)
  • @KyleDelaney 扩展方法 `this` 可以为 null。我希望 C# 在那里有一个内置的空检查,但它没有。 (3认同)
  • 伟大的字符串扩展方法 我编辑了我的,检查源字符串是否为null,以防止在执行.IndexOf()时发生任何对象引用错误. (2认同)
  • 源如何才能为空?这是一种扩展方法. (2认同)
  • 我做了同样的扩展方法,但是我对字符串toCheck进行了空检查,如果编码器传入了空值,则IndexOf方法总会抛出ArgumentNullException。因此,扩展方法可以同时检查源和toCheck是否具有容错能力。 (2认同)
  • @Iain如果你调用`myString.SomeMethod()`并且`myString`为空,那么你确实应该得到空指针异常。检查这一点不是扩展方法的工作。 (2认同)
  • @Nyerguds - 我经常专门为空值创建扩展方法。对我来说,让扩展方法处理空值是一个/feature/。作为一个很好、简单的例子,我更喜欢使用扩展方法而不是调用“string.IsNullOrEmpty()”。这个扩展方法的好处是我可以在空字符串上调用它。如果没有这个好处,我将不得不使用空条件运算符,然后使用空合并运算符(将“bool?”的“null”值合并为“false”) (2认同)

Col*_*nic 1315

测试字符串是否paragraph包含字符串word(感谢@QuarterMeister)

culture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0
Run Code Online (Sandbox Code Playgroud)

描述文本所用语言culture的实例在哪里CultureInfo.

这种解决方案对于不区分大小写的定义是透明的,这种定义与语言有关.例如,英语使用字符Ii第九个字母的大写和小写版本,而土耳其语使用这些字符作为其29个字母长字母的第11和第12个字母.土耳其大写版本的'i'是不熟悉的角色'İ'.

因此,串tinTIN是同一个词在英语,但不同的词在土耳其.据我所知,一个是"精神",另一个是拟声词.(土耳其人,请纠正我,如果我错了,或建议一个更好的例子)

总而言之,如果您知道文本所使用的语言,则只能回答"这两个字符串是否相同但在不同情况下" 的问题.如果你不知道,你将不得不采取行动.鉴于英语在软件方面的霸权,你应该诉诸于此CultureInfo.InvariantCulture,因为以熟悉的方式会出错.

  • 为什么不`culture.CompareInfo.IndexOf(paragraph,word,CompareOptions.IgnoreCase)> = 0`?它使用正确的文化并且不区分大小写,它不分配临时小写字符串,并且它避免了转换为小写和比较是否总是与不区分大小写的比较相同的问题. (64认同)
  • 当两个不同的字母具有相同的小写字母时,与ToLower()比较将给出不区分大小写的IndexOf的不同结果.例如,在U + 0398"希腊大写字母Theta"或U + 03F4"希腊大写字母Theta符号"上调用ToLower()会产生U + 03B8,"希腊小写字母Theta",但大写字母被认为是不同的.两种解决方案都考虑使用相同大写字母的小写字母不同,例如U + 0073"Latin Small Letter S"和U + 017F"Latin Small Letter Long S",因此IndexOf解决方案似乎更加一致. (15认同)
  • 此解决方案还通过为应该是搜索功能的内存分配内存来不必要地污染堆 (9认同)
  • 你为什么不写"ddddfg".IndexOf("Df",StringComparison.OrdinalIgnoreCase)? (8认同)
  • 是的,你对土耳其语非常正确.ı=>我,我=>İ (6认同)
  • @Quartermeister - 和BTW,我相信.NET 2和.NET4在这方面表现不同,因为.NET 4总是使用NORM_LINGUISTIC_CASING而.NET 2没有(这个标志出现在Windows Vista中). (3认同)
  • SIK 和 SIK。巨大差距。 (2认同)

mkc*_*ler 220

你可以IndexOf()像这样使用:

string title = "STRING";

if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1)
{
    // The string exists in the original
}
Run Code Online (Sandbox Code Playgroud)

由于0(零)可以是索引,因此请检查-1.

MSDN

如果找到该字符串,则从零开始的索引位置值,如果不是,则返回-1.如果value为String.Empty,则返回值为0.


Jed*_*Jed 138

使用Regex的替代解决方案:

bool contains = Regex.IsMatch("StRiNG to search", Regex.Escape("string"), RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

  • 更糟糕的是,由于搜索字符串被解释为正则表达式,因此许多标点字符将导致错误的结果(或由于表达式无效而触发异常).尝试搜索`"."````这是一个不包含搜索字符串的示例字符串"`.或者尝试搜索""(无效"`,就此而言. (31认同)
  • @cHao:在这种情况下,`Regex.Escape`可以提供帮助.当`IndexOf`/extension`Contains`简单(并且可以说更清楚)时,正则表达式似乎仍然没有必要. (17认同)
  • 必须说我更喜欢这种方法,尽管使用IsMatch来保持整洁. (7认同)
  • 好主意,我们在RegexOptions中有很多按位组合,例如`RegexOptions.IgnoreCase&RegexOptions.IgnorePatternWhitespace&RegexOptions.CultureInvariant;`对于任何人都有帮助. (6认同)
  • 请注意,我并不是说这个Regex解决方案是最好的方法.我只是添加到原始发布问题的答案列表中"是否有办法使以下返回成立?". (6认同)
  • 这将比使用IndexOf效率大大降低.使用正则表达式会增加更多的处理时间,内存等. (2认同)
  • 因为这在简单的场景中不起作用(“.”,“这里没有点”),这*不是*一个“替代解决方案”。 (2认同)

Ed *_* S. 77

您可以先将字符串向上或向下放大.

string title = "string":
title.ToUpper().Contains("STRING")  // returns true
Run Code Online (Sandbox Code Playgroud)

哎呀,刚看到最后一点.不区分大小写的比较可能**做同样的事情,如果性能不是问题,我没有看到创建大写副本和比较它们的问题.我曾经发誓我曾经看过一次不区分大小写的比较...

  • 搜索"土耳其测试":) (118认同)
  • 两年后再次看到这个和一个新的downvote ...无论如何,我同意有更好的方法来比较字符串.但是,并非所有程序都将本地化(大多数不会),许多程序是内部或一次性应用程序.因为对于一次性应用程序最好的建议,我几乎不能指望获得信用......我正在继续:D (14认同)
  • 在一些法语语言环境中,大写字母没有变音符号,因此ToUpper()可能不比ToLower()好.如果它们可用,我会说使用适当的工具 - 不区分大小写的比较. (7认同)
  • 正在搜索"土耳其测试"和搜索"土耳其测试"一样吗? (7认同)
  • 不要使用ToUpper或ToLower,并做Jon Skeet所说的 (5认同)
  • 有趣的是,我已经看到ToUpper()在这种情况下推荐使用ToLower(),因为显然ToLower()在某些文化中可能"失去保真度" - 也就是说,两个不同的大写字符转换为相同的小写字符. (4认同)

小智 51

答案的一个问题是,如果字符串为null,它将抛出异常.您可以将其添加为支票,因此不会:

public static bool Contains(this string source, string toCheck, StringComparison comp)
{
    if (string.IsNullOrEmpty(toCheck) || string.IsNullOrEmpty(source))
        return true;

    return source.IndexOf(toCheck, comp) >= 0;
} 
Run Code Online (Sandbox Code Playgroud)

  • 现在,如果source是空字符串,则返回true,无论toCheck是什么,这都将返回null.这不可能是正确的.如果toCheck为空字符串且source不为null,则IndexOf也会返回true.这里需要检查null.我建议if(source == null || value == null)返回false; (12认同)
  • 如果toCheck是空字符串,则需要根据Contains文档返回true:"如果value参数出现在此字符串中,则为true,或者如果value为空字符串("");否则为false." (8认同)
  • 根据上述amurra的评论,建议的代码是否需要更正?并且不应该将其添加到已接受的答案中,以便最好的响应是第一个? (3认同)
  • `if (string.IsNullOrEmpty(source)) return string.IsNullOrEmpty(toCheck);` (3认同)
  • 源不能为空 (2认同)

tak*_*ala 37

这很简洁.

Regex.IsMatch(file, fileNamestr, RegexOptions.IgnoreCase)
Run Code Online (Sandbox Code Playgroud)

  • 但这将与模式匹配.在你的例子中,如果`fileNamestr`有任何特殊的正则表达式字符(例如`*`,`+`,`.`等),那么你将会非常惊讶.使这个解决方案像正确的`Contains`函数一样工作的唯一方法是通过`Regex.Escape(fileNamestr)`来逃避`fileNamestr`. (30认同)
  • 此外,解析和匹配正则表达式比简单的不区分大小写的比较要消耗更多资源 (2认同)

Mat*_*nda 36

仅限.NET Core 2.0+(截至目前)

从2.0版开始,.NET Core有一对处理这个问题的方法:

  • String.Contains(Char,StringComparison)
  • String.Contains(String,StringComparison)

例:

"Test".Contains("test", System.StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,他们可能会进入.NET标准,并从那里进入基类库的所有其他实现.

  • .NET 5.0 包含在“.NET Core 2.0+”中 (6认同)
  • 现在也可在 [.NET Standard 2.1](https://docs.microsoft.com/en-us/dotnet/api/system.string.contains?view=netstandard-2.1) 中使用 (4认同)

And*_*rew 35

StringExtension类是前进的方法,我结合上面的几个帖子给出了一个完整的代码示例:

public static class StringExtensions
{
    /// <summary>
    /// Allows case insensitive checks
    /// </summary>
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source.IndexOf(toCheck, comp) >= 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 因为这简化了代码的阅读和编写。它本质上是模仿 .Net 的后续版本直接添加到类中的内容。对于让你和他人的生活变得更轻松的简单便捷方法有很多话要说,即使它们确实增加了一点抽象。 (2认同)

Fab*_*ler 27

OrdinalIgnoreCase,CurrentCultureIgnoreCase还是InvariantCultureIgnoreCase?

由于缺少这个,这里有一些关于何时使用哪一个的建议:

DOS

  • 使用StringComparison.OrdinalIgnoreCase的比较作为默认的安全文化无关的字符串匹配.
  • 使用StringComparison.OrdinalIgnoreCase比较来提高速度.
  • StringComparison.CurrentCulture-based向用户显示输出时使用字符串操作.
  • 切换基于不变文化的字符串操作的当前使用以使用非语言StringComparison.OrdinalStringComparison.OrdinalIgnoreCase当比较在
    语言上不相关时(例如,符号).
  • 使用ToUpperInvariant而不是ToLowerInvariant将字符串规范化以进行比较.

注意事项

  • 对未明确或隐式指定字符串比较机制的字符串操作使用重载.
  • 在大多数情况下使用StringComparison.InvariantCulture基于字符串的
    操作; 少数例外之一是
    持久的语言有意义但与文化无关的数据.

根据这些规则,您应该使用:

string title = "STRING";
if (title.IndexOf("string", 0, StringComparison.[YourDecision]) != -1)
{
    // The string exists in the original
}
Run Code Online (Sandbox Code Playgroud)

而[YourDecision]取决于上述建议.

来源链接:http://msdn.microsoft.com/en-us/library/ms973919.aspx

  • @BKSpurgeon 如果大小写无关紧要,我会使用 OrdinalIgnoreCase (2认同)

Pra*_*nka 18

简单而有效

title.ToLower().Contains("String".ToLower())
Run Code Online (Sandbox Code Playgroud)


小智 15

这些是最简单的解决方案.

  1. 按索引

    string title = "STRING";
    
    if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1)
    {
        // contains 
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过改变案例

    string title = "STRING";
    
    bool contains = title.ToLower().Contains("string")
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过Regex

    Regex.IsMatch(title, "string", RegexOptions.IgnoreCase);
    
    Run Code Online (Sandbox Code Playgroud)


ser*_*hio 11

我知道这不是C#,但在框架(VB.NET)中已经存在这样的功能

Dim str As String = "UPPERlower"
Dim b As Boolean = InStr(str, "UpperLower")
Run Code Online (Sandbox Code Playgroud)

C#变种:

string myString = "Hello World";
bool contains = Microsoft.VisualBasic.Strings.InStr(myString, "world");
Run Code Online (Sandbox Code Playgroud)


Cas*_*sey 11

InStr如果您对国际化有所顾虑(或者您可以重新实现),那么VisualBasic程序集中的方法是最好的.在它看来dotNeetPeek显示它不仅占大写字母和小写字母,而且还包括假名类型和全角度与半宽字符(主要与亚洲语言相关,尽管罗马字母也有全宽版本) ).我正在跳过一些细节,但查看私有方法InternalInStrText:

private static int InternalInStrText(int lStartPos, string sSrc, string sFind)
{
  int num = sSrc == null ? 0 : sSrc.Length;
  if (lStartPos > num || num == 0)
    return -1;
  if (sFind == null || sFind.Length == 0)
    return lStartPos;
  else
    return Utils.GetCultureInfo().CompareInfo.IndexOf(sSrc, sFind, lStartPos, CompareOptions.IgnoreCase | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth);
}
Run Code Online (Sandbox Code Playgroud)


cdy*_*oby 11

像这样:

string s="AbcdEf";
if(s.ToLower().Contains("def"))
{
    Console.WriteLine("yes");
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是特定于文化的,在某些情况下可能会失败.culture.CompareInfo.IndexOf(段落,单词,CompareOptions.IgnoreCase)应该被使用. (3认同)
  • [为什么在进行不区分大小写的字符串比较时避免使用string.ToLower()?](http://stackoverflow.com/questions/28440783/why-avoid-string-tolower-when-doing-case-insensitive-string-comparisons) Tl; Dr*这是昂贵的,因为新的字符串是"制造的".* (3认同)

小智 10

用这个:

string.Compare("string", "STRING", new System.Globalization.CultureInfo("en-US"), System.Globalization.CompareOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

  • 提问者正在寻找`Contains`而不是`Compare`. (25认同)

das*_*der 10

您可以使用字符串比较参数(可从 .net 2.1 及更高版本获得) String.Contains Method

public bool Contains (string value, StringComparison comparisonType);
Run Code Online (Sandbox Code Playgroud)

例子:

string title = "ASTRINGTOTEST";
title.Contains("string", StringComparison.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)


小智 7

使用RegEx是一种直接的方法:

Regex.IsMatch(title, "string", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

  • 你的答案与guptat59完全一样,但正如他的回答所指出的,这将匹配正则表达式,所以如果你正在测试的字符串包含任何特殊的正则表达式字符,它将不会产生所需的结果. (4认同)
  • 这是[此答案](http://stackoverflow.com/a/13302103/542251)的直接副本,并且遇到与该答案中所述相同的问题 (2认同)

Mel*_*per 7

只是为了建立这里的答案,您可以创建一个字符串扩展方法,使其更加用户友好:

    public static bool ContainsIgnoreCase(this string paragraph, string word)
    {
        return CultureInfo.CurrentCulture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0;
    }
Run Code Online (Sandbox Code Playgroud)

  • 为避免强制文化为 en-US 的问题,请改用 `return CultureInfo.CurrentCulture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) &gt;= 0;`。 (4认同)
  • 假设您的段落和单词将始终位于 en-US (2认同)

Tar*_*aro 5

这与此处的其他示例非常相似,但我决定将枚举简化为bool,primary,因为通常不需要其他替代方法.这是我的例子:

public static class StringExtensions
{
    public static bool Contains(this string source, string toCheck, bool bCaseInsensitive )
    {
        return source.IndexOf(toCheck, bCaseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal) >= 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

用法如下:

if( "main String substring".Contains("SUBSTRING", true) )
....
Run Code Online (Sandbox Code Playgroud)


sha*_*kla 5

如果你想检查你传递的字符串是否在字符串中,那么有一个简单的方法。

string yourStringForCheck= "abc";
string stringInWhichWeCheck= "Test abc abc";

bool isContained = stringInWhichWeCheck.ToLower().IndexOf(yourStringForCheck.ToLower()) > -1;
Run Code Online (Sandbox Code Playgroud)

如果包含或不包含字符串,则此布尔值将返回


小智 5

与之前的答案类似(使用扩展方法),但有两个简单的 null 检查(C# 6.0 及更高版本):

public static bool ContainsIgnoreCase(this string source, string substring)
{
    return source?.IndexOf(substring ?? "", StringComparison.OrdinalIgnoreCase) >= 0;
}
Run Code Online (Sandbox Code Playgroud)

如果 source 为 null,则返回 false(通过 null 传播运算符 ?.)

如果子字符串为空,则视为空字符串并返回 true(通过空合并运算符??)

如果需要,当然可以将 StringComparison 作为参数发送。


Ben*_*Ben 5

评分最高的几个答案都以各自的方式都很好且正确,我写在这里是为了添加更多信息、背景和观点。

\n

为了清楚起见,让我们考虑如果 A 中存在等于 B 的任何代码点子序列,则字符串 A 包含字符串 B。如果我们接受这一点,那么问题就简化为两个字符串是否相等的问题。

\n

几十年来,人们一直在详细考虑字符串何时相等的问题。目前的大部分知识都封装在 SQL 排序规则中。Unicode 范式接近于此的真子集。但除了 SQL 排序规则之外,还有更多内容。

\n

例如,在 SQL 排序规则中,您可以

\n
    \n
  • 严格二进制敏感- 以便不同的 Unicode 规范化形式(例如预组合或组合重音)进行不同的比较。

    \n

    例如,\xc3\xa9可以表示为U+00e9(预组合)或U+0065 U+0301(e 与组合锐音符)。

    \n

    这些是相同还是不同?

    \n
  • \n
  • Unicode 规范化- 在这种情况下,上述示例将彼此相等,但不等于\xc3\x89e

    \n
  • \n
  • 不区分重音(例如西班牙语、德语、瑞典语等文本)。在这种情况下U+0065===U+0065 U+0301U+00e9\xc3\xa9 =e

    \n
  • \n
  • 大小写和重音不敏感,因此(例如西班牙语、德语、瑞典语等文本)。在这种情况下U+00e9= U+0065 U+0301= U+00c9= U+0045 U+0301= U+0049= U+0065= E= e=\xc3\x89 =\xc3\xa9

    \n
  • \n
  • 假名类型敏感或不敏感,即您可以将日语平假名和片假名视为等同或不同。这两个音节包含相同数量的字符,以(大部分)相同的方式组织和发音,但书写方式不同并且用于不同的目的。例如,片假名用于外来词或外国名字,但平假名用于儿童读物、发音指南(例如红宝石),以及单词没有汉字的情况(或者作者可能不知道汉字的情况) ,或者认为读者可能不知道)。

    \n
  • \n
  • 全角或半角敏感- 由于历史原因,日语编码包括某些字符的两种表示形式 - 它们以不同的尺寸显示。

    \n
  • \n
  • 连字被视为等效或不等效:参见https://en.wikipedia.org/wiki/Ligature_(writing)

    \n

    \xc3\xa6相同的ae还是不一样?它们具有不同的 Unicode 编码,重音字符也是如此,但与重音字符不同的是,它们看起来也不同。

    \n

    这让我们...

    \n
  • \n
  • 阿拉伯语表示形式等效

    \n

    阿拉伯文字具有优美的书法文化,相邻字母的特定序列具有特定的表示形式。其中许多已在 Unicode 标准中进行编码。我不完全理解这些规则,但在我看来它们类似于连字。

    \n
  • \n
  • 其他文字和系统:我对卡纳达语、马拉雅拉姆语、僧伽罗语、泰语、古吉拉特语、藏语或几乎所有未提及的数十或数百种文字一无所知。我认为他们对于程序员来说也有类似的问题,并且考虑到到目前为止提到的问题数量和如此少的脚本,他们可能还有程序员应该考虑的其他问题。

    \n
  • \n
\n

这让我们摆脱了“编码”的困境。

\n

现在我们必须进入杂草的“意义”。

\n
    \n
  • 等于?Beijing\xe5\x8c\x97\xe4\xba\xac如果不是,则B\xc4\x95ij\xc4\xabng等于\xe5\x8c\x97\xe4\xba\xac?如果没有,为什么不呢?这是拼音罗马化。

    \n
  • \n
  • 等于?Peking\xe5\x8c\x97\xe4\xba\xac如果没有,为什么不呢?这是 Wade-Giles 罗马化。

    \n
  • \n
  • 等于?BeijingPeking如果没有,为什么不呢?

    \n
  • \n
\n

你为什么要这样做?

\n

例如,如果您想知道两个字符串(A 和 B)是否可能指代相同的地理位置或同一个人,您可能想问:

\n
    \n
  • 这些字符串可能是一组汉字序列的 Wade-Giles 或拼音表示形式吗?如果是,对应的集合之间是否有重叠?

    \n
  • \n
  • 这些字符串之一可能是汉字的西里尔字母转录吗?

    \n
  • \n
  • 这些字符串之一可能是拼音罗马化的西里尔字母音译吗?

    \n
  • \n
  • 这些字符串之一可能是英文名称汉化拼音罗马化的西里尔字母音译吗?

    \n
  • \n
\n

显然,这些都是难题,没有明确的答案,而且无论如何,根据问题的目的,答案可能会有所不同。

\n

最后用一个具体的例子来结束。

\n
    \n
  • 如果您要递送信件或包裹,显然BeijingPekingB\xc4\x95ij\xc4\xabng\xe5\x8c\x97\xe4\xba\xac都是相等的。为了这个目的,他们都同样优秀。毫无疑问,中国邮局承认许多其他选择,例如P\xc3\xa9kin法语、Pequim葡萄牙语、B\xe1\xba\xafc Kinh越南语和\xd0\x91\xd1\x8d\xd1\x8d\xd0\xb6\xd0\xb8\xd0\xbd蒙古语。
  • \n
\n

词语没有固定的含义。

\n

语言是我们用来探索世界、完成任务以及与他人交流的工具。

\n

虽然看起来像equalityBeijing、 或 这样的词会很有帮助meaning的词有固定的含义会很有帮助,但可悲的事实是它们没有。

\n

但我们似乎还是得过且过。

\n

长话短说:如果你正在处理与现实相关的问题,那么在所有的模糊性(模糊性、不确定性、缺乏清晰的界限)中,每个问题基本上都有三种可能的答案:

\n
    \n
  • 大概
  • \n
  • 可能不会
  • \n
  • 或许
  • \n
\n