我需要检查 Array1 中的 CHAR 是不是包含我的 Array2 中的一些 CHAR,但我不能将 Contains 用于 CHAR... 如何解决? [关闭]

Posted

技术标签:

【中文标题】我需要检查 Array1 中的 CHAR 是不是包含我的 Array2 中的一些 CHAR,但我不能将 Contains 用于 CHAR... 如何解决? [关闭]【英文标题】:I need to check if CHAR from Array1 contains some CHAR from my Array2 but I cant use Contains for CHAR... How to solve it? [closed]我需要检查 Array1 中的 CHAR 是否包含我的 Array2 中的一些 CHAR,但我不能将 Contains 用于 CHAR... 如何解决? [关闭] 【发布时间】:2022-01-02 20:15:08 【问题描述】:

我需要将一个电话号码(写得不好)转换为正确的格式。示例:+ 420 741-854()642。至 +420741854642 enter image description here

【问题讨论】:

idownvotedbecau.se/imageofcode string result = "+" + string.Concat(source.Where(c => c >= '0' && c <= '9')); 你倒退了,你想检查你的有效字符列表是否包含循环迭代中的字符。 【参考方案1】:

我想我只是用正则表达式替换所有非数字;

var messy = "+ 420 741-854()642";
var clean = Regex.Replace(messy, "[^+0-9]", "");

对于正则表达式模式[^+0-9],这意味着“来自的单个字符,集合:(所有字符除外)+09 所以在实践中这个模式匹配空格@987654326 @、连字符 -、括号 () 等。任何匹配的字符(即坏字符)都被替换为空

【讨论】:

【参考方案2】:

如果您想按照图片中显示的样式进行操作,则可以通过以下操作进行修复:

        string number = "+ 420 741-854()642.";
        char[] povolene =  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+' ;

        for(int i = 0; i < number.Length; i++) 
            if (povolene.Contains(number[i])) 

                .
                .
                .
            
        

【讨论】:

谢谢你 【参考方案3】:

这是 RegEx(正则表达式)的工作 :) 你可以有这样的东西: /+?\d+/gm 它将从 +420741-854()642 返回三个匹配项为 ['+420741', ' 854', '642'] 当然可以连接起来。您也可以事先将 '+' 替换为 '00',然后连接 /\d+/gm 中的匹配项。这只是匹配字符串中的所有数字。

https://regex101.com/ 是学习 RegEx 的绝佳资源。

【讨论】:

【参考方案4】:

从技术上讲,您可以在 Linq 的帮助下过滤掉数字 (c &gt;= '0' &amp;&amp; c &lt;= '9'):

using System.Linq;

...

string source = "+ 420 741-854()642.";

string result = "+" + string.Concat(source.Where(c => c >= '0' && c <= '9'));

【讨论】:

还是 Char.IsDigit? @Caius Jard: Char.IsDigit 在所有 unicode 数字上返回 true,(例如,波斯数字,۱۲۳),而不仅仅是 0..9 "+" 仅应在输入字符串以“+”或“00”开头时添加。因为如果输入字符串中省略了国家/地区代码,您可能会连接无效数字... @lidqy:这就是为什么我开始回答“从技术上讲,你可以......”。如果电话号码可以是不同的格式(有或没有国家/地区代码),无效需要详细分析,我们没有来自问题的信息来执行它 @DmitryBychenko 是的,这超出了问题的范围,但仍然要考虑是否要验证电话号码并正确格式化电话号码......

以上是关于我需要检查 Array1 中的 CHAR 是不是包含我的 Array2 中的一些 CHAR,但我不能将 Contains 用于 CHAR... 如何解决? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串中是不是存在所有 char 值

如何在C中复制char数组?

java检查char是不是是switch case语句中的数字[关闭]

如何根据 JavaScript 中的值检查对象是不是在数组中?

比较两个数组的有效方法

检查是不是安装了 Python 包