我有一个号码num=010
。我想计算这个数字中包含的位数。如果位数高于某个数字,我想做一些处理。
在上面的例子中,位数是3。
谢谢!
答案 0 :(得分:11)
假设变量只包含数字,那么shell已经完成了你想要的长度Shell Parameter Expansion。
$ var=012
$ echo "${#var}"
3
答案 1 :(得分:5)
在BASH中你可以这样做:
num='a0b1c0d23'
n="${num//[^[:digit:]]/}"
echo ${#n}
5
使用awk你可以这样做:
num='012'
awk -F '[0-9]' '{print NF-1}' <<< "$num"
3
num='00012'
awk -F '[0-9]' '{print NF-1}' <<< "$num"
5
num='a0b1c0d'
awk -F '[0-9]' '{print NF-1}' <<< "$num"
3
答案 2 :(得分:2)
假设变量x是问题中的“特定数字”
public class Child {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Parent Parent { get; set; }
}
public class Parent {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IEnumerable<Child> Children { get; set; }
}
public ChildMap : ClassMap<Child> {
public ChildMap() {
Id(x => x.Id);
Map(x => x.Name);
// How should I set this up?
Reference(x => x.Parent);
}
}
public ParentMap : ClassMap<Parent> {
public ParentMap() {
Id(x => x.Id);
Map(x => x.Name);
// How should I set this up ?
HasMany(x => x.Children);
}
}
答案 3 :(得分:0)
这项工作用于混合数字和非数字的任意字符串:
ndigits=`echo $str | grep -P -o '\d' | wc -l`
演示:
$ echo sf293gs192 | grep -P -o '\d' | wc -l
6
答案 4 :(得分:0)
使用sed
:
s="string934 56 96containing digits98w6"
num=$(echo "$s" |sed 's/[^0-9]//g')
echo ${#num}
10
使用grep
:
s="string934 56 96containing digits98w6"
echo "$s" |grep -o "[0-9]" |grep -c ""
10