我正在尝试从字符串中过滤子字符串。问题不仅仅是从“fdskufh”中删除子字符串“fd”。它从字符串中删除“fd”,但随后也删除了第二个f,因此新字符串为“skuh”。我们欢迎所有的建议?我一直在使用以下功能:
def stripChars(s:String, ch:String)= s filterNot (ch contains _)
答案 0 :(得分:1)
这个怎么样:
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
TextInput
} = React;
var CustomControl = React.createClass({
propTypes: {
onChangeTextValue: React.PropTypes.func,
value: React.PropTypes.string.isRequired
},
getDefaultProps: function() {
return {
onChangeTextValue: () => { },
value: ""
}
},
getInitialState: function() {
return {
text: this.props.value
};
},
setText: function(value) {
this.setState({
text: value
});
try {
return this.props.onChangeTextValue(value);
} catch (_error) { }
},
render: function(){
return (
<TextInput
style={{ height: 40, borderColor: 'gray',
borderWidth: 1 }}
onChangeText={this.setText}
value={this.state.text}
/>
)
}
});
var SampleApp = React.createClass({
getInitialState() {
return {
'textValue': ''
}
},
render: function() {
return (
<View style={styles.container}>
<Text>
Parent Input
</Text>
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => this.setState({textValue:text})}
value={this.state.textValue}
/>
<Text>
Custom control input
</Text>
<CustomControl
onChangeTextValue={(text) => this.setState({textValue:text})}
value={this.state.textValue}
/>
<Text style={styles.instructions}>
Updating the parent input should update the custom control value too. Right now only when we update the custom control value, the parent input is updated.
</Text>
</View>
);
}
});
如果字符序列不存在,这具有返回原始字符串的优点。所以你可以拥有这个:
scala> def stripChars(s: String, ch: String) = s.split(ch).mkString
stripChars: (s: String, ch: String)String
scala> stripChars("fdskufh", "fd")
res194: String = skufh
它也适用于以下内容:
scala> stripChars("fdskufh", "ff")
res195: String = fdskufh
编辑:
或者你可以忽略所有这些,只需像谢尔盖建议的那样scala> stripChars("fdskufhfdsh", "fd")
res196: String = skufhsh
答案 1 :(得分:-1)
查看您的代码行的含义:它将遍历s
中的所有字符,并且会过滤掉{{1}中的所有字符}。所以你所观察到的确实是预期的。
您可以使用正则表达式:
ch