as3 获取一段字符串中的所有数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了as3 获取一段字符串中的所有数字相关的知识,希望对你有一定的参考价值。

例: var str:string = "s1a2g3f4";
用什么方法能把1 2 3 4 取出来

参考技术A 有正则表达式
var all_numbers:Array = str.match(/\d/);
数字就一个一个地存在数组all_numbers中了。
参考技术B var str:String = "s1a2g3f4";

var r:RegExp = /\d/igx;
trace(str.match(r).join(""))本回答被提问者采纳
参考技术C 不用正则表达式的方法:
var
str:String
=
"s1a2g3f4";
for(var
i:Number
=
0;i<str.length;i++)

var
a
=
Number(str.charAt(i));
if(String(a)
!=
"NaN")

trace(a);//输出数字

参考技术D 不用正则表达式的方法:
var str:String = "s1a2g3f4";
for(var i:Number = 0;i<str.length;i++)

var a = Number(str.charAt(i));
if(String(a) != "NaN")

trace(a);//输出数字

第5个回答  2010-03-09 不用正则表达式的方法:
var str:String = "s1a2g3f4";
for(var i:Number = 0;i<str.length;i++)

var a = Number(str.charAt(i));
if(String(a) != "NaN")

trace(a);//输出数字

在 R 中使用混合类型将嵌套列表中的字符数字转换为数字

【中文标题】在 R 中使用混合类型将嵌套列表中的字符数字转换为数字【英文标题】:Convert chararacter numbers to numeric in nested list with mixed types in R 【发布时间】:2022-01-10 20:08:23 【问题描述】:

我有一堆嵌套列表,其中包含所有字符类型的元素。其中一些字符实际上是需要转换为数字类型元素的数字。

如何修改这些列表,以便将所有可能的字符类型数字转换为数字,但非数字字符元素保持不变(例如,不会被as.numeric() 转换为NA)?

例如,我从

raw_list <- list(
      'a' = list('1', '2'),
      'b' = list(
        'c' = list('3', 'x'),
        'd' = c('4', 'z'),
        'e' = '5'))

但我需要去

cleaned_list <- list(
      'a' = list(1, 2),
      'b' = list(
        'c' = list(3, 'x'),
        'd' = c('4', 'z'),
        'e' = 5))

奖励:额外感谢基于 tidyverse/purrr 的解决方案

【问题讨论】:

e 中的raw_list 不应该是 5 吗? 你是对的,我已经改变了输入和输出,所以它们匹配 我不明白。我应该对这个链接做些什么吗? 【参考方案1】:

您可以使用readr::parse_guess 将字符类型的数字转换为数字类型的数字,而无需将字符转换为NAs。

我还创建了一个函数来转换嵌套列表中的数字。 请注意,您不能将字符和数字存储在同一个向量中。

希望对你有帮助。

library(tidyverse)
func_parse_list <- function(l)
  if(length(l)>1)
    map(l, func_parse_list) %>% return()
  else
    parse_guess(l) %>% return()
  

list('a' = list('1', '2'),
     'b' = list(
       'c' = list('3', 'x'),
       'd' = c('4', 'z'),
       'e' = '5')) %>%
  func_parse_list()
#> $a
#> $a[[1]]
#> [1] 1
#> 
#> $a[[2]]
#> [1] 2
#> 
#> 
#> $b
#> $b$c
#> $b$c[[1]]
#> [1] 3
#> 
#> $b$c[[2]]
#> [1] "x"
#> 
#> 
#> $b$d
#> $b$d[[1]]
#> [1] 4
#> 
#> $b$d[[2]]
#> [1] "z"
#> 
#> 
#> $b$e
#> [1] 5

由reprex package (v2.0.1) 于 2021-12-05 创建

【讨论】:

【参考方案2】:

另一种选择是使用type.convert,它可以将列表作为参数。

raw_list %>%
  type.convert(as.is = TRUE)

这与使用purrrtype.convert 相同。

library(purrr)

purrr::map(raw_list, type.convert, as.is = TRUE)

输出

$a
$a[[1]]
[1] 1

$a[[2]]
[1] 2


$b
$b$c
$b$c[[1]]
[1] 3

$b$c[[2]]
[1] "x"


$b$d
[1] "4" "z"

$b$e
[1] 5

【讨论】:

在这种情况下您不需要purrrtype.convert() 可以将列表作为参数。所以:raw_list %&gt;% type.convert(as.is = TRUE)purrr 相同。 请注意,tjis 解决方案仍将元素 d 中的 4 保留为字符。 @deschen。 map 解决方案也是如此。 $d [1] "4" "z"必须是符合原子向量规则的字符?!还是我错过了什么? 对。没有引起足够的重视。一个向量中不能有字符和数字。 您说得对,在'd' = c('4', 'z') 中,数字 4 必须保留为字符,因为它是原子向量的一部分。我已经修改了问题和cleaned_list 输出以反映这一点。

以上是关于as3 获取一段字符串中的所有数字的主要内容,如果未能解决你的问题,请参考以下文章

flash as3如何获取实例名字中的数字

ActionScript 3 AS3获取字符串中的最后一个字符

AS3 数组中的多个值

AS3 用图像字符替换字符串/文本

ActionScript 3 AS3将数字转换为字符串

iOS 获取字符串中的所有数字